首页 > 解决方案 > 如何从 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 .

标签: formsxamarin

解决方案


如果要让列表水平滚动,可以在 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 之前,不要忘记将以下代码行添加到AppDelegateiOS 上的课程或 Android 上的课程:MainActivity

Forms.SetFlags("CollectionView_Experimental");

推荐阅读