我们不能将Binding
分配到UWP中的只读属性SelectedItems
。
作为一个工具,我们可以在类中定义IsSelected
属性,类应该继承INotifyPropertyChanged。
类代码:
public class Bundle : INotifyPropertyChanged
{
private string _name;
private bool _isSelected;
public string Name
{
get { return _name; }
set
{
_name = value;
RaisePropertyChanged("Name");
}
}
public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
RaisePropertyChanged("IsSelected");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
}
我们可以设置为false,以使CheckBox
将不会显示的IsMultiSelectCheckBoxEnabled
。然后我们可以在DataTemplate
中添加一个CheckBox
控件,然后我们可以将IsChecked
属性绑定到IsSelected
。
例如:
<ListView Name="MyListView" SelectionMode="Multiple" IsMultiSelectCheckBoxEnabled="False">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected,Mode=TwoWay}"></CheckBox>
<TextBlock Text="{Binding Name}" ></TextBlock>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
你有没有考虑过使用ListView控件的SelectionChanged事件?从外观上看,它看起来像一个selectionChanged事件任务。如果没有,请您详细说明或提供一个演示样本应用程序或代码或GIF或YouTubeVid,试图实现您的目标?它可以帮助我们提供更好的解决方案 –