2021-08-13 WPF控件专题 ComboBox 控件详解

今天药忘吃喽~ 2022-09-04 10:44 457阅读 0赞

在这里插入图片描述

1.ComboBox 控件介绍

  • 手动添加项
  • 绑定数据 代码里ItemSource IEnumerable List

    Items.Add

  • DataContext =List ItemSource=”{Binding}“

2.具体案例

  1. <Grid>
  2. <ComboBox HorizontalAlignment="Left" Margin="96,95,0,0" VerticalAlignment="Top" Width="190" Height="30" VerticalContentAlignment="Center" >
  3. <ComboBoxItem Content="请选择" IsSelected="True"></ComboBoxItem>
  4. <ComboBoxItem Content="软件班"></ComboBoxItem>
  5. <ComboBoxItem Content="英语班"></ComboBoxItem>
  6. <ComboBoxItem Content="数学班"></ComboBoxItem>
  7. </ComboBox>
  8. <ComboBox Name="cboClasses" HorizontalAlignment="Left" Margin="96,182,0,0" VerticalAlignment="Top" Width="190" Height="30" VerticalContentAlignment="Center" ItemsSource="{Binding}" SelectionChanged="CboClasses_SelectionChanged">
  9. </ComboBox>
  10. <Button Content="Button" HorizontalAlignment="Left" Margin="162,282,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
  11. </Grid>
  12. /// <summary>
  13. /// ComboBoxWindow.xaml 的交互逻辑
  14. /// </summary>
  15. public partial class ComboBoxWindow : Window
  16. {
  17. public ComboBoxWindow()
  18. {
  19. InitializeComponent();
  20. }
  21. private void Window_Loaded(object sender, RoutedEventArgs e)
  22. {
  23. //获取数据源
  24. List<ClassInfo> list = GetClassInfos();
  25. // cboClasses.ItemsSource = list;//指定数据源
  26. cboClasses.SelectedValuePath = "ClassId";//项的值对应的属性名
  27. cboClasses.DisplayMemberPath = "ClassName";//项的显示文本对应的属性名
  28. cboClasses.DataContext = list;
  29. //不能直接移除,也不能添加
  30. //cboClasses.Items.Add(new ClassInfo()
  31. //{
  32. // ClassId = 4,
  33. // ClassName = "软件班"
  34. //});
  35. //如果仍然要添加或移除其中的项??? 移除:先把ItemSource设置为null,然后通过list移除项,再重新指定ItemSource。
  36. //cboClasses.ItemsSource = null;
  37. //list.Add(new ClassInfo()
  38. //{
  39. // ClassId = 4,
  40. // ClassName = "软件班"
  41. //});
  42. //cboClasses.ItemsSource = list;
  43. //动态添加移除
  44. //foreach(ClassInfo cinfo in list)
  45. //{
  46. // cboClasses.Items.Add(cinfo);
  47. //}
  48. }
  49. /// <summary>
  50. /// 获取班级列表
  51. /// </summary>
  52. /// <returns></returns>
  53. private List<ClassInfo> GetClassInfos()
  54. {
  55. List<ClassInfo> list = new List<ClassInfo>();
  56. list.AddRange(new ClassInfo[]
  57. {
  58. new ClassInfo()
  59. {
  60. ClassId=0,
  61. ClassName="请选择"
  62. },
  63. new ClassInfo()
  64. {
  65. ClassId=1,
  66. ClassName="计算机一班"
  67. },
  68. new ClassInfo()
  69. {
  70. ClassId=2,
  71. ClassName="计算机二班"
  72. },
  73. new ClassInfo()
  74. {
  75. ClassId=3,
  76. ClassName="商务英语一班"
  77. },
  78. new ClassInfo()
  79. {
  80. ClassId=3,
  81. ClassName="商务英语二班"
  82. }
  83. });
  84. return list;
  85. }
  86. private void Button_Click(object sender, RoutedEventArgs e)
  87. {
  88. cboClasses.Items.RemoveAt(1);
  89. }
  90. //选择项改变时
  91. private void CboClasses_SelectionChanged(object sender, SelectionChangedEventArgs e)
  92. {
  93. //MessageBox.Show((cboClasses.SelectedItem as ClassInfo).ClassName);
  94. //当前选定的文本、改变前的选定文本
  95. MessageBox.Show(cboClasses.Text);
  96. }
  97. }
  98. /// <summary>
  99. /// 班级信息实体
  100. /// </summary>
  101. public class ClassInfo
  102. {
  103. public int ClassId { get; set; }
  104. public string ClassName { get; set; }
  105. }

发表评论

表情:
评论列表 (有 0 条评论,457人围观)

还没有评论,来说两句吧...

相关阅读