gpt4 book ai didi

Combobox后台绑定

转载 作者:我是一只小鸟 更新时间:2023-08-15 14:31:26 33 4
gpt4 key购买 nike

本文主要介绍WPF中Combobox的后台绑定,我在这里主要讲解数据驱动 1、对于前台绑定,我们首先写出想要绑定的对象 新建一个Models文件夹,将Student类写入 。

                        
                           public class Student
 {
     public int Id { get; set; }
     public string Name { get; set; }
     public int Age { get; set; }
    
 }

                        
                      

2、接下来,我们在前台绑定它 。

                        
                          <ComboBox
    Width="200"
    Height="30"
    Margin="10"
    ItemsSource="{Binding Students}" />

                        
                      

3、我们需要用到List或者ObservableCollection将Student封装进去 那么后台代码写 。

                        
                          public ObservableCollection<Student> Students { get; set; }
public MainWindowViewModel()
{
    Students = new ObservableCollection<Student>()
    {
        new Student()
        {
            Id = 1,
            Name="张三",
            Age=12
        },
         new Student()
        {
            Id = 2,
            Name="李四",
            Age=12
        },
          new Student()
        {
            Id = 3,
            Name="王五",
            Age=12
        },
    };
}

                        
                      

运行后的结果是 。

现在我们继续改造,我们在前台加入DisplayMemberPath="Name"看看效果 。

                        
                           <ComboBox
     Width="200"
     Height="30"
     Margin="10"
     DisplayMemberPath="Name"
     ItemsSource="{Binding Students}" />

                        
                      

发现,下拉列表变成了Student中的Name 接下来我们继续修改前台代码,加上一个Button 。

                        
                           <StackPanel>
     <!--
         DisplayMemberPath设置下拉框选则的是List的哪一位
         SelectedValue 是鼠标选中的值  传递的地址是SelectedValuePath
     -->
     <ComboBox
         Name="comboBox1"
         Width="200"
         Height="30"
         Margin="10"
         DisplayMemberPath="Name"
         ItemsSource="{Binding Students}"
         SelectedValue="{Binding SelectStudentName}"
         SelectedValuePath="Name" />
     <Button
         Width="200"
         Height="30"
         Command="{Binding OpenCmd}" />
 </StackPanel>

                        
                      

后台加上命令代码 。

                        
                           private string _name;

 public string SelectStudentName
 {
     get { return _name; }
     set { SetProperty<string>(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类库,存放也行,我这里在根目录简单写一下.

                        
                           <Style TargetType="{x:Type local:MainWindow}">
     <Setter Property="Background" Value="{Binding Path=SelectedSkinColor.Color}"/>
 </Style>

                        
                      

在App.xaml引入资源字典 。

                        
                          <Application.Resources>
    <ResourceDictionary Source="/SkinColorsStyle.xaml" />
</Application.Resources>

                        
                      

我懒得去重新写对象了,这个皮肤直接放在刚才写的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; }
 }

                        
                      

接下来就是改造代码。 前台 。

                        
                          <ComboBox
    x:Name="comboBox"
    Width="200"
    Height="30"
    Margin="10"
    DisplayMemberPath="Name"
    ItemsSource="{Binding Students}"
    SelectedItem="{Binding Path=SelectedSkinColor}"
    SelectedValuePath="Color" />

                        
                      

后台 。

                        
                           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
  },
  

                        
                      

image
image

最后此篇关于Combobox后台绑定的文章就讲到这里了,如果你想了解更多关于Combobox后台绑定的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com