当前位置:   article > 正文

C# WPF mvvm模式下combobox绑定(list、Dictionary)

wpf mvvm combobox

ComboBox是一个非常常用的界面控件,它的数据源ItemsSource既可以绑定一个List列表,也可以是一个字典,本篇文章就讲这些内容展开讲解。

01

前言

      ComboBox是一个非常常用的下拉菜单界面控件,它的数据源ItemsSource既可以绑定一个List列表,也可以是一个字典,本篇文章就讲这些内容展开讲解。

      首先,讲解几个常用的属性概念:

ItensSource:用于指定下拉列表绑定的List<string>数据对象;

SelectedIndex :下拉列表中选中行的索引;

DisplayMemberPath:下拉列表中要显示的List<T>数据对象的列,因为List<T>数据对象可能会有多列;

SelectedValuePath:下拉列表中,对应与显示的List<T>数据对象的列,返回的List<T>数据对象的列;

02


绑定ObservableCollection<T>

① 第一种情况T为一个普通学生类时:

类的定义:

  1. public class Students
  2. {
  3. public int ID { get; set; }
  4. public string Name { get; set; }
  5. }

数据绑定:

  1. <dxlc:LayoutItem
  2. Margin="10,0,0,0"
  3. FontSize="13"
  4. Label="StudentName" HorizontalContentAlignment="Right">
  5. <ComboBox
  6. Width="150"
  7. HorizontalAlignment="Left"
  8. SelectedIndex="2"
  9. DisplayMemberPath="Name"
  10. ItemsSource="{Binding StudentList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
  11. </dxlc:LayoutItem>

viewmodel中:

public ObservableCollection<Students> StudentList { get; set; } = new ObservableCollection<Students>();
  1. StudentList.Add(new Students() { ID = 1, Name = "xiao zhu"});
  2. StudentList.Add(new Students() { ID = 2, Name = "xiao Li" });
  3. StudentList.Add(new Students() { ID = 3, Name = "xiao Wang" });
  4. StudentList.Add(new Students() { ID = 4, Name = "xiao Zhang" });

②第二种情况T为HumanSkinColors的枚举类型时:

枚举定义:

  1. public enum HumanSkinColors
  2. {
  3. Yellow,
  4. White,
  5. Black
  6. }

数据绑定:

  1. <dxlc:LayoutItem
  2. Margin="10,0,0,0"
  3. FontSize="13"
  4. Label="HumanSkinColor" HorizontalContentAlignment="Right">
  5. <dxe:ComboBoxEdit
  6. Width="150"
  7. HorizontalAlignment="Left"
  8. SelectedIndex="0"
  9. ItemsSource="{Binding HumanSkinList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
  10. </dxlc:LayoutItem>

viewmodel代码:

public ObservableCollection<Students> StudentList { get; set; } = new ObservableCollection<Students>();
  1. foreach (HumanSkinColors HumanSkinColor in Enum.GetValues(typeof(HumanSkinColors)))
  2. {
  3. HumanSkinList.Add(HumanSkinColor);
  4. }

03


绑定Dictionary<T,T>

字典的定义:

public Dictionary<int,string> StudentDic { get; set; } = new Dictionary<int, string>();

数据绑定:

  1. <dxlc:LayoutItem
  2. Margin="10,0,0,0"
  3. FontSize="13"
  4. Label="StudentName" HorizontalContentAlignment="Right">
  5. <ComboBox
  6. Width="150"
  7. HorizontalAlignment="Left"
  8. SelectedIndex="3"
  9. DisplayMemberPath="Value"
  10. SelectedValuePath="Key"
  11. ItemsSource="{Binding StudentDic}" />
  12. </dxlc:LayoutItem>

viewmodel代码:

  1. StudentDic.Add(1, "xiao zhu");
  2. StudentDic.Add(2, "xiao Li");
  3. StudentDic.Add(3, "xiao Wang");
  4. StudentDic.Add(4, "xiao Zhang");

04


结果展示

7639adfc3d1a435404c76206a603c1d4.png

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/493511
推荐阅读
相关标签
  

闽ICP备14008679号