我有一个 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) SelectedItems
到 List<object>
, 然后订阅 SelectionChanged
事件。然后在所选项目更改时手动更新绑定(bind)。
关于c# - 如何将 CollectionView SelectedItems 绑定(bind)到列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63834688/