如何在wpf窗口加载中选中xceedsoftware.checkboxlist控件中的一些项目。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在wpf窗口加载中选中xceedsoftware.checkboxlist控件中的一些项目。相关的知识,希望对你有一定的参考价值。
我找了很多我的问题的解决方案,但我没有找到任何答案。不久,我想加载我的wpf窗口与选定的项目从复选框列表,我不能达到任何复选框在列表中,使选定的属性为真,所以这里是我的列表我附加到复选框列表。
List<PeriodicSpareParts> sp = new List<PeriodicSpareParts>();
sp.Add(new PeriodicSpareParts { ID=1,SubjectName="Oil Filter" });
sp.Add(new PeriodicSpareParts { ID = 2, SubjectName = "Air Filter" });
sp.Add(new PeriodicSpareParts { ID = 3, SubjectName = "Gas Filter" });
CheckList.ItemsSource = sp;
CheckList.DisplayMemberPath = "SubjectName";
CheckList.ValueMemberPath = "ID";
和我的复选框列表在xaml。
<xctk:CheckListBox Grid.Column="0" Grid.Row="0" Name="CheckList" Background="Transparent" FontFamily="century Gothic" FontSize="15"
BorderThickness="0" Margin="10,10,0,0" ItemSelectionChanged="CheckList_ItemSelectionChanged"/>
所以请帮我找到一个解决方案
答案
如果你想用不同于设置ItemsSource的方法来检查CheckListBox的一些项目,你可以这样做。
- 修改你的PeriodicSpareParts类:添加一个属性,映射CheckListBox的SelectedMemberPath。这个新属性可以按照你的要求命名,在我的例子中,我命名为IsSelected。
修改你的PeriodicSpareParts类:实现INotifyPropertyChanged接口,告诉WPF系统,是之前步骤中创建的属性发生了变化。
public class PeriodicSpareParts : INotifyPropertyChanged { public int ID { get; set; } public string SubjectName { get; set; } private bool isSelected; public bool IsSelected { get => this.isSelected; set { this.isSelected = value; this.OnPropertyChanged(); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }
在加载的事件中,在那里你获得了带有所选项目ID的List,在ItemsSource属性中设置IsSelected=true的项目。
private void OnLoaded(object sender, RoutedEventArgs e) { var listOfPeriodicSparePartsIDsToCheck = new List<int> {2, 3}; foreach (PeriodicSpareParts item in this.CheckList.ItemsSource) { if (listOfPeriodicSparePartsIDsToCheck.Any(x => x == item.ID)) item.IsSelected = true; } }
在构造函数(或其他方法)中,设置 ItemsSource 属性。
public MainWindow() { InitializeComponent(); List<PeriodicSpareParts> sp = new List<PeriodicSpareParts>(); sp.Add(new PeriodicSpareParts { ID = 1, SubjectName = "Oil Filter", IsSelected = false }); sp.Add(new PeriodicSpareParts { ID = 2, SubjectName = "Air Filter", IsSelected = false }); sp.Add(new PeriodicSpareParts { ID = 3, SubjectName = "Gas Filter", IsSelected = false }); sp.Add(new PeriodicSpareParts { ID = 4, SubjectName = "Another", IsSelected = false }); CheckList.ItemsSource = sp; CheckList.DisplayMemberPath = "SubjectName"; CheckList.ValueMemberPath = "ID"; this.Loaded += OnLoaded; }
在XAML中,将步骤1中创建的新属性映射到SelectedMemberPath属性中。
<xctk:CheckListBox Name="CheckList" Grid.Row="0" Grid.Column="0" Margin="10,10,0,0" Background="Transparent" BorderThickness="0" FontFamily="century Gothic" FontSize="15" ItemSelectionChanged="CheckList_ItemSelectionChanged" SelectedMemberPath="IsSelected" />
你可以检查这个答案 这个 项目。
以上是关于如何在wpf窗口加载中选中xceedsoftware.checkboxlist控件中的一些项目。的主要内容,如果未能解决你的问题,请参考以下文章