本文主要介绍WPF中Combobox的后台绑定,我在这里主要讲解数据驱动1、对于前台绑定,我们首先写出想要绑定的对象新建一个Models文件夹,将Student类写入
public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
2、接下来,我们在前台绑定它
(相关资料图)
3、我们需要用到List或者ObservableCollection将Student封装进去那么后台代码写
public ObservableCollection Students { get; set; }public MainWindowViewModel(){ Students = new ObservableCollection() { new Student() { Id = 1, Name="张三", Age=12 }, new Student() { Id = 2, Name="李四", Age=12 }, new Student() { Id = 3, Name="王五", Age=12 }, };}
运行后的结果是
现在我们继续改造,我们在前台加入DisplayMemberPath="Name"看看效果
发现,下拉列表变成了Student中的Name接下来我们继续修改前台代码,加上一个Button
后台加上命令代码
private string _name; public string SelectStudentName { get { return _name; } set { SetProperty(ref _name, value); } } private DelegateCommand _fieldName; public DelegateCommand OpenCmd => _fieldName ?? (_fieldName = new DelegateCommand(ExecuteCommandName)); void ExecuteCommandName() { MessageBox.Show(SelectStudentName); }
既然 SelectedValuePath是选中的值,我们将前台代码修改为SelectedValuePath="Age" />再试一下
接下来,我们在扩展一下,这个主要是用在程序中换皮肤的操作你想想,很多优秀的程序都有深色、浅色、自定义颜色吧,我这里只是用ComBoBox提供一个思路代码简洁,实现简单的换肤效果
首先,由于我们暂时只有一个MainWindow,那么资源字典就很好写了新建一个资源字典,位置随意存放,我直接放在根目录下,你们项目小的话,可以写一个Styles文件夹,专门存放资源字典,项目大的话,写一个Theme类库,存放也行,我这里在根目录简单写一下。
在App.xaml引入资源字典
我懒得去重新写对象了,这个皮肤直接放在刚才写的Student了。你们不要这要写,最好还是重新起一个Skin类
public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public Brush Color { get; set; } }
接下来就是改造代码。前台
后台
private Student _selectedSkinColor = new Student { Color = Brushes.AliceBlue }; public Student SelectedSkinColor { get { return _selectedSkinColor; } set { if (_selectedSkinColor != value) { _selectedSkinColor = value; RaisePropertyChanged(); } } } //不要忘记刚才实例化的,加上一个字段Color //看,我是写在Student中的,你们可以重新写Skin类 new Student() { Id = 1, Name="张三", Age=12, Color = Brushes.Blue },
标签: