使 ListView 项目选择表单 ItemSsource
Posted
技术标签:
【中文标题】使 ListView 项目选择表单 ItemSsource【英文标题】:Make ListView Item Selected Form ItemSource 【发布时间】:2020-09-08 14:04:46 【问题描述】:我有一个这样的 ListView
<ListView x:Name="lview" SelectionMode="Multiple">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="Binding Name, Mode=OneWay" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我正在像这样将数据绑定到这个 Listview
public MainPage()
this.InitializeComponent();
ObservableCollection<OptionItem> io = new ObservableCollection<OptionItem>();
io.Add(new OptionItem Name = "11111111111", IsSelected=false );
io.Add(new OptionItem Name = "22222222222", IsSelected=true );
io.Add(new OptionItem Name = "33333333333", IsSelected=true );
io.Add(new OptionItem Name = "44444444444",IsSelected=false );
lview.ItemsSource = io;
现在您可以在我的模型中看到,我有一个名为 IsSelected
的属性。如何将它绑定到 listView,以便在 ItemsSource
中选择的项目与在 ListView 中选择的一样?
【问题讨论】:
【参考方案1】:根据您希望选择发生的时间,订阅ListView
的事件,您可以在其中将选定的OptionItem
s 添加到选定项目列表中:
代码
private void Lview_SizeChanged(object sender, SizeChangedEventArgs e)
var listView = sender as ListView;
foreach (OptionItem item in listView.Items)
if (item.IsSelected)
listView.SelectedItems.Add(item);
XAML
<ListView x:Name="lview" SelectionMode="Multiple" SizeChanged="Lview_SizeChanged">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="Binding Name, Mode=OneWay" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
无论如何,您可能想考虑使用像MVVM 这样的模式,因为这将使您的代码(到目前为止!)更具可读性和更易于维护。
【讨论】:
以上是关于使 ListView 项目选择表单 ItemSsource的主要内容,如果未能解决你的问题,请参考以下文章
如何使 Qt Quick (QML) ListView 项目无法选择?
无法使我的 ListView 可选择,按下该元素不会突出显示