forms - 如何从 xamarin 表单的视图模型中水平选项值的列表视图项
问题描述
我有listview,我需要根据viewmodel的条件设置stacklayout水平选项值。所以如何设置
私有字符串水平选项;
public string HorizontalOption
{
get => horizontalOption;
set
{
horizontalOption = value;
OnPropertyChanged(nameof(HorizontalOption));
}
}
public async Task FetchThreadUserData()
{
sing (HttpClient hc = new HttpClient())
{
try
{
IsBusy = true;
var jsonString = await hc.GetStringAsync(url);
var obj = JsonConvert.DeserializeObject<MessageList>(jsonString);
foreach (var user in obj.messages)
{
string authorIdStr = user.authorId;
if(authorIdStr==userId)
{
HorizontalOption = "StartAndExpand";
}
else if(authorIdStr!=userId)
{
HorizontalOption = "EndAndExpand";
}
list.Add(user);
}
}
and binding it like this in Xaml
<StackLayout HorizontalOptions="{Binding HorizontalOption}" >
but it is not working .
解决方案
如果要让列表水平滚动,可以在 Forms 中使用CollectionView 。CollectionView在 XF 4.0 之后发布。
<CollectionView ItemsSource="{Binding xxx}">
<CollectionView.ItemsLayout>
<ListItemsLayout Orientation="Horizontal" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
//...
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
在调用 Forms.Init 之前,不要忘记将以下代码行添加到AppDelegate
iOS 上的课程或 Android 上的课程:MainActivity
Forms.SetFlags("CollectionView_Experimental");
推荐阅读
- mongodb - 聚合 MongoDB 后重命名字段
- python-3.x - dask collect 上的 streamz 异常
- ab-testing - 消除原始内容的 VWO Flash (FOOC)
- tensorflow - 双向 RNN 单元 - 是否共享?
- angular-formly - 如何布置依赖于主字段的子字段?
- macos - Unity3D 2018.2 在 Macbook Pro 上的播放模式下运行异常缓慢
- vba - 如何阻止循环在多列用户表单列表框中显示相同的字符串?
- css - Bootstrap - 复选框左侧的标签
- django - Kubernetes 不返回端点 Django Rest-Framework
- c - 通过将 void 指针转换为不同的结构指针来访问它的内容