c# - 如何将 CollectionView SelectedItems 绑定(bind)到列表?

标签 c# xaml xamarin xamarin.forms

我有一个 CollectionView,它包含一个项目列表。我想不出将多个选定项目绑定(bind)到 ViewModel 中的列表的方法。

XAML 代码:

<CollectionView ItemsSource="{Binding Names}" SelectedItems="{Binding NamesSelection}" SelectionMode="Multiple">
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <StackLayout>
                <Label Text="{Binding Name}" VerticalOptions="Center"/>
            </StackLayout>
         </DataTemplate>
     </CollectionView.ItemTemplate>
</CollectionView>

非功能性 ViewModel 代码:

public MvxObservableCollection<Name> Names { get; } = new MvxObservableCollection<Name>(NamesHelpers.GetObjects());
private MvxObservableCollection<Name> _namesSelection;
public MvxObservableCollection<Name> NamesSelection 
{ 
    get=> _namesSelection;
    set 
    {
         SetProperty(ref _namesSelection, value);
    } 
}

如果我有一个 SelectedItem 子句,这可能会起作用。但我不确定如何让它适用于 SelectedItems。

理想的输出是 NamesSelection 列表根据所选项目填充/取消填充。

最佳答案

SelectedItems必须是 IList<object> . ObservableCollection<object>未实现该接口(interface)(由于协方差,例如 List<Name> 也未实现),因此无法正常工作。

解决方法是绑定(bind) SelectedItemsList<object> , 然后订阅 SelectionChanged事件。然后在所选项目更改时手动更新绑定(bind)。

关于c# - 如何将 CollectionView SelectedItems 绑定(bind)到列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63834688/

相关文章:

android - TextInputLayout 无法正常工作

c# - String.Replace CRLF 为 '\n'

c# - 防止字节在递增超过 255 时返回到 0

c# - TypeError : chat. 发送不是函数

ios - 使用 Xamarin iOS 设计器添加等宽约束

c# - 将 UIBarButtonItem 添加到 Xamarin IOS 中的导航栏

c# - 带有 "ANY"和本地数组的子查询生成嵌套太深的 SQL 语句

c# - 将 xaml 模板中的属性绑定(bind)到 viewmodel (RibbonTextBox)

c# - 在 UWP 应用程序中更改 Flyout 的高度和宽度

c# - MouseUp 事件在左键单击时不起作用