Combobox后台绑定

2023-08-15 12:10:37 来源:博客园

本文主要介绍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  },  

标签:

最新内容