WPF - ComboBox 和 ListBox 的 ItemsSource 自动绑定 enum 值集合

打印 上一主题 下一主题

主题 907|帖子 907|积分 2721

前言

WPF 的 ComboBox 控件等绑定 enum 值很繁琐,很让人头疼,网上也有提供了一些方法,基本是使用 ObjectDataProvider 方式和 MarkupExtension 方式,
有没有办法绑定值为 enum 类型就自动加载所有枚举值选项,下面记录一种方法;
实现方式

主要通过附加属性,根据绑定的 Selecter.SelectedItem 属性,获取属性类型,再获取枚举值的集合了,下面是实现代码:
 添加附加属性 ItemsControlHelper.EnumValuesToItemsSourceProperty
  1. public class ItemsControlHelper
  2. {
  3. <Grid>
  4.     <ComboBox Width="120"
  5.               HorizontalAlignment="Center"
  6.               VerticalAlignment="Center"
  7.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  8.               SelectedItem="{Binding Animal}" />
  9. </Grid>/// <summary>
  10. <Grid>
  11.     <ComboBox Width="120"
  12.               HorizontalAlignment="Center"
  13.               VerticalAlignment="Center"
  14.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  15.               SelectedItem="{Binding Animal}" />
  16. </Grid>/// 绑定 enum 类型所有值给 ItemsSource 赋值
  17. <Grid>
  18.     <ComboBox Width="120"
  19.               HorizontalAlignment="Center"
  20.               VerticalAlignment="Center"
  21.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  22.               SelectedItem="{Binding Animal}" />
  23. </Grid>/// 必须绑定 SelectedItem
  24. <Grid>
  25.     <ComboBox Width="120"
  26.               HorizontalAlignment="Center"
  27.               VerticalAlignment="Center"
  28.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  29.               SelectedItem="{Binding Animal}" />
  30. </Grid>/// </summary>
  31. <Grid>
  32.     <ComboBox Width="120"
  33.               HorizontalAlignment="Center"
  34.               VerticalAlignment="Center"
  35.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  36.               SelectedItem="{Binding Animal}" />
  37. </Grid>public static readonly DependencyProperty EnumValuesToItemsSourceProperty = DependencyProperty.RegisterAttached(
  38. <Grid>
  39.     <ComboBox Width="120"
  40.               HorizontalAlignment="Center"
  41.               VerticalAlignment="Center"
  42.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  43.               SelectedItem="{Binding Animal}" />
  44. </Grid><Grid>
  45.     <ComboBox Width="120"
  46.               HorizontalAlignment="Center"
  47.               VerticalAlignment="Center"
  48.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  49.               SelectedItem="{Binding Animal}" />
  50. </Grid>"EnumValuesToItemsSource", typeof(bool), typeof(ItemsControlHelper), new PropertyMetadata(default(bool), OnEnumValuesToItemsSourceChanged));
  51. <Grid>
  52.     <ComboBox Width="120"
  53.               HorizontalAlignment="Center"
  54.               VerticalAlignment="Center"
  55.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  56.               SelectedItem="{Binding Animal}" />
  57. </Grid>public static void SetEnumValuesToItemsSource(DependencyObject element, bool value)
  58. <Grid>
  59.     <ComboBox Width="120"
  60.               HorizontalAlignment="Center"
  61.               VerticalAlignment="Center"
  62.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  63.               SelectedItem="{Binding Animal}" />
  64. </Grid>{
  65. <Grid>
  66.     <ComboBox Width="120"
  67.               HorizontalAlignment="Center"
  68.               VerticalAlignment="Center"
  69.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  70.               SelectedItem="{Binding Animal}" />
  71. </Grid><Grid>
  72.     <ComboBox Width="120"
  73.               HorizontalAlignment="Center"
  74.               VerticalAlignment="Center"
  75.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  76.               SelectedItem="{Binding Animal}" />
  77. </Grid>element.SetValue(EnumValuesToItemsSourceProperty, value);
  78. <Grid>
  79.     <ComboBox Width="120"
  80.               HorizontalAlignment="Center"
  81.               VerticalAlignment="Center"
  82.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  83.               SelectedItem="{Binding Animal}" />
  84. </Grid>}
  85. <Grid>
  86.     <ComboBox Width="120"
  87.               HorizontalAlignment="Center"
  88.               VerticalAlignment="Center"
  89.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  90.               SelectedItem="{Binding Animal}" />
  91. </Grid>public static bool GetEnumValuesToItemsSource(DependencyObject element)
  92. <Grid>
  93.     <ComboBox Width="120"
  94.               HorizontalAlignment="Center"
  95.               VerticalAlignment="Center"
  96.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  97.               SelectedItem="{Binding Animal}" />
  98. </Grid>{
  99. <Grid>
  100.     <ComboBox Width="120"
  101.               HorizontalAlignment="Center"
  102.               VerticalAlignment="Center"
  103.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  104.               SelectedItem="{Binding Animal}" />
  105. </Grid><Grid>
  106.     <ComboBox Width="120"
  107.               HorizontalAlignment="Center"
  108.               VerticalAlignment="Center"
  109.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  110.               SelectedItem="{Binding Animal}" />
  111. </Grid>return (bool)element.GetValue(EnumValuesToItemsSourceProperty);
  112. <Grid>
  113.     <ComboBox Width="120"
  114.               HorizontalAlignment="Center"
  115.               VerticalAlignment="Center"
  116.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  117.               SelectedItem="{Binding Animal}" />
  118. </Grid>}
  119. <Grid>
  120.     <ComboBox Width="120"
  121.               HorizontalAlignment="Center"
  122.               VerticalAlignment="Center"
  123.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  124.               SelectedItem="{Binding Animal}" />
  125. </Grid>private static void OnEnumValuesToItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  126. <Grid>
  127.     <ComboBox Width="120"
  128.               HorizontalAlignment="Center"
  129.               VerticalAlignment="Center"
  130.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  131.               SelectedItem="{Binding Animal}" />
  132. </Grid>{
  133. <Grid>
  134.     <ComboBox Width="120"
  135.               HorizontalAlignment="Center"
  136.               VerticalAlignment="Center"
  137.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  138.               SelectedItem="{Binding Animal}" />
  139. </Grid><Grid>
  140.     <ComboBox Width="120"
  141.               HorizontalAlignment="Center"
  142.               VerticalAlignment="Center"
  143.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  144.               SelectedItem="{Binding Animal}" />
  145. </Grid>if (d is ItemsControl itemsControl && GetEnumValuesToItemsSource(itemsControl))
  146. <Grid>
  147.     <ComboBox Width="120"
  148.               HorizontalAlignment="Center"
  149.               VerticalAlignment="Center"
  150.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  151.               SelectedItem="{Binding Animal}" />
  152. </Grid><Grid>
  153.     <ComboBox Width="120"
  154.               HorizontalAlignment="Center"
  155.               VerticalAlignment="Center"
  156.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  157.               SelectedItem="{Binding Animal}" />
  158. </Grid>{
  159. <Grid>
  160.     <ComboBox Width="120"
  161.               HorizontalAlignment="Center"
  162.               VerticalAlignment="Center"
  163.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  164.               SelectedItem="{Binding Animal}" />
  165. </Grid><Grid>
  166.     <ComboBox Width="120"
  167.               HorizontalAlignment="Center"
  168.               VerticalAlignment="Center"
  169.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  170.               SelectedItem="{Binding Animal}" />
  171. </Grid><Grid>
  172.     <ComboBox Width="120"
  173.               HorizontalAlignment="Center"
  174.               VerticalAlignment="Center"
  175.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  176.               SelectedItem="{Binding Animal}" />
  177. </Grid>if (itemsControl.IsLoaded)
  178. <Grid>
  179.     <ComboBox Width="120"
  180.               HorizontalAlignment="Center"
  181.               VerticalAlignment="Center"
  182.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  183.               SelectedItem="{Binding Animal}" />
  184. </Grid><Grid>
  185.     <ComboBox Width="120"
  186.               HorizontalAlignment="Center"
  187.               VerticalAlignment="Center"
  188.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  189.               SelectedItem="{Binding Animal}" />
  190. </Grid><Grid>
  191.     <ComboBox Width="120"
  192.               HorizontalAlignment="Center"
  193.               VerticalAlignment="Center"
  194.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  195.               SelectedItem="{Binding Animal}" />
  196. </Grid>{
  197. <Grid>
  198.     <ComboBox Width="120"
  199.               HorizontalAlignment="Center"
  200.               VerticalAlignment="Center"
  201.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  202.               SelectedItem="{Binding Animal}" />
  203. </Grid><Grid>
  204.     <ComboBox Width="120"
  205.               HorizontalAlignment="Center"
  206.               VerticalAlignment="Center"
  207.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  208.               SelectedItem="{Binding Animal}" />
  209. </Grid><Grid>
  210.     <ComboBox Width="120"
  211.               HorizontalAlignment="Center"
  212.               VerticalAlignment="Center"
  213.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  214.               SelectedItem="{Binding Animal}" />
  215. </Grid><Grid>
  216.     <ComboBox Width="120"
  217.               HorizontalAlignment="Center"
  218.               VerticalAlignment="Center"
  219.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  220.               SelectedItem="{Binding Animal}" />
  221. </Grid>SetComboBoxItemsSource(itemsControl);
  222. <Grid>
  223.     <ComboBox Width="120"
  224.               HorizontalAlignment="Center"
  225.               VerticalAlignment="Center"
  226.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  227.               SelectedItem="{Binding Animal}" />
  228. </Grid><Grid>
  229.     <ComboBox Width="120"
  230.               HorizontalAlignment="Center"
  231.               VerticalAlignment="Center"
  232.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  233.               SelectedItem="{Binding Animal}" />
  234. </Grid><Grid>
  235.     <ComboBox Width="120"
  236.               HorizontalAlignment="Center"
  237.               VerticalAlignment="Center"
  238.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  239.               SelectedItem="{Binding Animal}" />
  240. </Grid>}
  241. <Grid>
  242.     <ComboBox Width="120"
  243.               HorizontalAlignment="Center"
  244.               VerticalAlignment="Center"
  245.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  246.               SelectedItem="{Binding Animal}" />
  247. </Grid><Grid>
  248.     <ComboBox Width="120"
  249.               HorizontalAlignment="Center"
  250.               VerticalAlignment="Center"
  251.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  252.               SelectedItem="{Binding Animal}" />
  253. </Grid><Grid>
  254.     <ComboBox Width="120"
  255.               HorizontalAlignment="Center"
  256.               VerticalAlignment="Center"
  257.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  258.               SelectedItem="{Binding Animal}" />
  259. </Grid>else
  260. <Grid>
  261.     <ComboBox Width="120"
  262.               HorizontalAlignment="Center"
  263.               VerticalAlignment="Center"
  264.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  265.               SelectedItem="{Binding Animal}" />
  266. </Grid><Grid>
  267.     <ComboBox Width="120"
  268.               HorizontalAlignment="Center"
  269.               VerticalAlignment="Center"
  270.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  271.               SelectedItem="{Binding Animal}" />
  272. </Grid><Grid>
  273.     <ComboBox Width="120"
  274.               HorizontalAlignment="Center"
  275.               VerticalAlignment="Center"
  276.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  277.               SelectedItem="{Binding Animal}" />
  278. </Grid>{
  279. <Grid>
  280.     <ComboBox Width="120"
  281.               HorizontalAlignment="Center"
  282.               VerticalAlignment="Center"
  283.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  284.               SelectedItem="{Binding Animal}" />
  285. </Grid><Grid>
  286.     <ComboBox Width="120"
  287.               HorizontalAlignment="Center"
  288.               VerticalAlignment="Center"
  289.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  290.               SelectedItem="{Binding Animal}" />
  291. </Grid><Grid>
  292.     <ComboBox Width="120"
  293.               HorizontalAlignment="Center"
  294.               VerticalAlignment="Center"
  295.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  296.               SelectedItem="{Binding Animal}" />
  297. </Grid><Grid>
  298.     <ComboBox Width="120"
  299.               HorizontalAlignment="Center"
  300.               VerticalAlignment="Center"
  301.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  302.               SelectedItem="{Binding Animal}" />
  303. </Grid>itemsControl.Loaded += ComboBox_Loaded;
  304. <Grid>
  305.     <ComboBox Width="120"
  306.               HorizontalAlignment="Center"
  307.               VerticalAlignment="Center"
  308.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  309.               SelectedItem="{Binding Animal}" />
  310. </Grid><Grid>
  311.     <ComboBox Width="120"
  312.               HorizontalAlignment="Center"
  313.               VerticalAlignment="Center"
  314.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  315.               SelectedItem="{Binding Animal}" />
  316. </Grid><Grid>
  317.     <ComboBox Width="120"
  318.               HorizontalAlignment="Center"
  319.               VerticalAlignment="Center"
  320.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  321.               SelectedItem="{Binding Animal}" />
  322. </Grid>}
  323. <Grid>
  324.     <ComboBox Width="120"
  325.               HorizontalAlignment="Center"
  326.               VerticalAlignment="Center"
  327.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  328.               SelectedItem="{Binding Animal}" />
  329. </Grid><Grid>
  330.     <ComboBox Width="120"
  331.               HorizontalAlignment="Center"
  332.               VerticalAlignment="Center"
  333.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  334.               SelectedItem="{Binding Animal}" />
  335. </Grid>}
  336. <Grid>
  337.     <ComboBox Width="120"
  338.               HorizontalAlignment="Center"
  339.               VerticalAlignment="Center"
  340.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  341.               SelectedItem="{Binding Animal}" />
  342. </Grid>}
  343. <Grid>
  344.     <ComboBox Width="120"
  345.               HorizontalAlignment="Center"
  346.               VerticalAlignment="Center"
  347.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  348.               SelectedItem="{Binding Animal}" />
  349. </Grid>private static void SetComboBoxItemsSource(ItemsControl itemsControl)
  350. <Grid>
  351.     <ComboBox Width="120"
  352.               HorizontalAlignment="Center"
  353.               VerticalAlignment="Center"
  354.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  355.               SelectedItem="{Binding Animal}" />
  356. </Grid>{
  357. <Grid>
  358.     <ComboBox Width="120"
  359.               HorizontalAlignment="Center"
  360.               VerticalAlignment="Center"
  361.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  362.               SelectedItem="{Binding Animal}" />
  363. </Grid><Grid>
  364.     <ComboBox Width="120"
  365.               HorizontalAlignment="Center"
  366.               VerticalAlignment="Center"
  367.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  368.               SelectedItem="{Binding Animal}" />
  369. </Grid>var itemsBindingExpression = BindingOperations.GetBinding(itemsControl, ItemsControl.ItemsSourceProperty);
  370. <Grid>
  371.     <ComboBox Width="120"
  372.               HorizontalAlignment="Center"
  373.               VerticalAlignment="Center"
  374.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  375.               SelectedItem="{Binding Animal}" />
  376. </Grid><Grid>
  377.     <ComboBox Width="120"
  378.               HorizontalAlignment="Center"
  379.               VerticalAlignment="Center"
  380.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  381.               SelectedItem="{Binding Animal}" />
  382. </Grid>if (itemsBindingExpression != null)
  383. <Grid>
  384.     <ComboBox Width="120"
  385.               HorizontalAlignment="Center"
  386.               VerticalAlignment="Center"
  387.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  388.               SelectedItem="{Binding Animal}" />
  389. </Grid><Grid>
  390.     <ComboBox Width="120"
  391.               HorizontalAlignment="Center"
  392.               VerticalAlignment="Center"
  393.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  394.               SelectedItem="{Binding Animal}" />
  395. </Grid>{
  396. <Grid>
  397.     <ComboBox Width="120"
  398.               HorizontalAlignment="Center"
  399.               VerticalAlignment="Center"
  400.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  401.               SelectedItem="{Binding Animal}" />
  402. </Grid><Grid>
  403.     <ComboBox Width="120"
  404.               HorizontalAlignment="Center"
  405.               VerticalAlignment="Center"
  406.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  407.               SelectedItem="{Binding Animal}" />
  408. </Grid><Grid>
  409.     <ComboBox Width="120"
  410.               HorizontalAlignment="Center"
  411.               VerticalAlignment="Center"
  412.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  413.               SelectedItem="{Binding Animal}" />
  414. </Grid>throw new InvalidOperationException("When using ItemsControlHelper.EnumValuesToItemsSource, cannot be used ItemsSource at the same time.");
  415. <Grid>
  416.     <ComboBox Width="120"
  417.               HorizontalAlignment="Center"
  418.               VerticalAlignment="Center"
  419.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  420.               SelectedItem="{Binding Animal}" />
  421. </Grid><Grid>
  422.     <ComboBox Width="120"
  423.               HorizontalAlignment="Center"
  424.               VerticalAlignment="Center"
  425.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  426.               SelectedItem="{Binding Animal}" />
  427. </Grid>}
  428. <Grid>
  429.     <ComboBox Width="120"
  430.               HorizontalAlignment="Center"
  431.               VerticalAlignment="Center"
  432.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  433.               SelectedItem="{Binding Animal}" />
  434. </Grid><Grid>
  435.     <ComboBox Width="120"
  436.               HorizontalAlignment="Center"
  437.               VerticalAlignment="Center"
  438.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  439.               SelectedItem="{Binding Animal}" />
  440. </Grid>if (itemsControl.Items.Count > 0)
  441. <Grid>
  442.     <ComboBox Width="120"
  443.               HorizontalAlignment="Center"
  444.               VerticalAlignment="Center"
  445.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  446.               SelectedItem="{Binding Animal}" />
  447. </Grid><Grid>
  448.     <ComboBox Width="120"
  449.               HorizontalAlignment="Center"
  450.               VerticalAlignment="Center"
  451.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  452.               SelectedItem="{Binding Animal}" />
  453. </Grid>{
  454. <Grid>
  455.     <ComboBox Width="120"
  456.               HorizontalAlignment="Center"
  457.               VerticalAlignment="Center"
  458.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  459.               SelectedItem="{Binding Animal}" />
  460. </Grid><Grid>
  461.     <ComboBox Width="120"
  462.               HorizontalAlignment="Center"
  463.               VerticalAlignment="Center"
  464.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  465.               SelectedItem="{Binding Animal}" />
  466. </Grid><Grid>
  467.     <ComboBox Width="120"
  468.               HorizontalAlignment="Center"
  469.               VerticalAlignment="Center"
  470.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  471.               SelectedItem="{Binding Animal}" />
  472. </Grid>throw new InvalidOperationException("When using ItemsControlHelper.EnumValuesToItemsSource, Items Collection must be null");
  473. <Grid>
  474.     <ComboBox Width="120"
  475.               HorizontalAlignment="Center"
  476.               VerticalAlignment="Center"
  477.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  478.               SelectedItem="{Binding Animal}" />
  479. </Grid><Grid>
  480.     <ComboBox Width="120"
  481.               HorizontalAlignment="Center"
  482.               VerticalAlignment="Center"
  483.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  484.               SelectedItem="{Binding Animal}" />
  485. </Grid>}
  486. <Grid>
  487.     <ComboBox Width="120"
  488.               HorizontalAlignment="Center"
  489.               VerticalAlignment="Center"
  490.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  491.               SelectedItem="{Binding Animal}" />
  492. </Grid><Grid>
  493.     <ComboBox Width="120"
  494.               HorizontalAlignment="Center"
  495.               VerticalAlignment="Center"
  496.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  497.               SelectedItem="{Binding Animal}" />
  498. </Grid>var bindingExpression = BindingOperations.GetBindingExpression(itemsControl, Selector.SelectedItemProperty);
  499. <Grid>
  500.     <ComboBox Width="120"
  501.               HorizontalAlignment="Center"
  502.               VerticalAlignment="Center"
  503.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  504.               SelectedItem="{Binding Animal}" />
  505. </Grid><Grid>
  506.     <ComboBox Width="120"
  507.               HorizontalAlignment="Center"
  508.               VerticalAlignment="Center"
  509.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  510.               SelectedItem="{Binding Animal}" />
  511. </Grid>if (bindingExpression == null)
  512. <Grid>
  513.     <ComboBox Width="120"
  514.               HorizontalAlignment="Center"
  515.               VerticalAlignment="Center"
  516.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  517.               SelectedItem="{Binding Animal}" />
  518. </Grid><Grid>
  519.     <ComboBox Width="120"
  520.               HorizontalAlignment="Center"
  521.               VerticalAlignment="Center"
  522.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  523.               SelectedItem="{Binding Animal}" />
  524. </Grid>{
  525. <Grid>
  526.     <ComboBox Width="120"
  527.               HorizontalAlignment="Center"
  528.               VerticalAlignment="Center"
  529.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  530.               SelectedItem="{Binding Animal}" />
  531. </Grid><Grid>
  532.     <ComboBox Width="120"
  533.               HorizontalAlignment="Center"
  534.               VerticalAlignment="Center"
  535.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  536.               SelectedItem="{Binding Animal}" />
  537. </Grid><Grid>
  538.     <ComboBox Width="120"
  539.               HorizontalAlignment="Center"
  540.               VerticalAlignment="Center"
  541.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  542.               SelectedItem="{Binding Animal}" />
  543. </Grid>throw new InvalidOperationException("ItemsControl must be binding SelectedItem property");
  544. <Grid>
  545.     <ComboBox Width="120"
  546.               HorizontalAlignment="Center"
  547.               VerticalAlignment="Center"
  548.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  549.               SelectedItem="{Binding Animal}" />
  550. </Grid><Grid>
  551.     <ComboBox Width="120"
  552.               HorizontalAlignment="Center"
  553.               VerticalAlignment="Center"
  554.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  555.               SelectedItem="{Binding Animal}" />
  556. </Grid>}
  557. <Grid>
  558.     <ComboBox Width="120"
  559.               HorizontalAlignment="Center"
  560.               VerticalAlignment="Center"
  561.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  562.               SelectedItem="{Binding Animal}" />
  563. </Grid><Grid>
  564.     <ComboBox Width="120"
  565.               HorizontalAlignment="Center"
  566.               VerticalAlignment="Center"
  567.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  568.               SelectedItem="{Binding Animal}" />
  569. </Grid>var binding = bindingExpression.ParentBinding;
  570. <Grid>
  571.     <ComboBox Width="120"
  572.               HorizontalAlignment="Center"
  573.               VerticalAlignment="Center"
  574.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  575.               SelectedItem="{Binding Animal}" />
  576. </Grid><Grid>
  577.     <ComboBox Width="120"
  578.               HorizontalAlignment="Center"
  579.               VerticalAlignment="Center"
  580.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  581.               SelectedItem="{Binding Animal}" />
  582. </Grid>var dataType = bindingExpression.DataItem?.GetType();
  583. <Grid>
  584.     <ComboBox Width="120"
  585.               HorizontalAlignment="Center"
  586.               VerticalAlignment="Center"
  587.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  588.               SelectedItem="{Binding Animal}" />
  589. </Grid><Grid>
  590.     <ComboBox Width="120"
  591.               HorizontalAlignment="Center"
  592.               VerticalAlignment="Center"
  593.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  594.               SelectedItem="{Binding Animal}" />
  595. </Grid>var propertyInfo = dataType?.GetProperty(binding.Path.Path);
  596. <Grid>
  597.     <ComboBox Width="120"
  598.               HorizontalAlignment="Center"
  599.               VerticalAlignment="Center"
  600.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  601.               SelectedItem="{Binding Animal}" />
  602. </Grid><Grid>
  603.     <ComboBox Width="120"
  604.               HorizontalAlignment="Center"
  605.               VerticalAlignment="Center"
  606.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  607.               SelectedItem="{Binding Animal}" />
  608. </Grid>if (propertyInfo == null)
  609. <Grid>
  610.     <ComboBox Width="120"
  611.               HorizontalAlignment="Center"
  612.               VerticalAlignment="Center"
  613.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  614.               SelectedItem="{Binding Animal}" />
  615. </Grid><Grid>
  616.     <ComboBox Width="120"
  617.               HorizontalAlignment="Center"
  618.               VerticalAlignment="Center"
  619.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  620.               SelectedItem="{Binding Animal}" />
  621. </Grid>{
  622. <Grid>
  623.     <ComboBox Width="120"
  624.               HorizontalAlignment="Center"
  625.               VerticalAlignment="Center"
  626.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  627.               SelectedItem="{Binding Animal}" />
  628. </Grid><Grid>
  629.     <ComboBox Width="120"
  630.               HorizontalAlignment="Center"
  631.               VerticalAlignment="Center"
  632.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  633.               SelectedItem="{Binding Animal}" />
  634. </Grid><Grid>
  635.     <ComboBox Width="120"
  636.               HorizontalAlignment="Center"
  637.               VerticalAlignment="Center"
  638.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  639.               SelectedItem="{Binding Animal}" />
  640. </Grid>return;
  641. <Grid>
  642.     <ComboBox Width="120"
  643.               HorizontalAlignment="Center"
  644.               VerticalAlignment="Center"
  645.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  646.               SelectedItem="{Binding Animal}" />
  647. </Grid><Grid>
  648.     <ComboBox Width="120"
  649.               HorizontalAlignment="Center"
  650.               VerticalAlignment="Center"
  651.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  652.               SelectedItem="{Binding Animal}" />
  653. </Grid>}
  654. <Grid>
  655.     <ComboBox Width="120"
  656.               HorizontalAlignment="Center"
  657.               VerticalAlignment="Center"
  658.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  659.               SelectedItem="{Binding Animal}" />
  660. </Grid><Grid>
  661.     <ComboBox Width="120"
  662.               HorizontalAlignment="Center"
  663.               VerticalAlignment="Center"
  664.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  665.               SelectedItem="{Binding Animal}" />
  666. </Grid>var propertyType = propertyInfo.PropertyType;
  667. <Grid>
  668.     <ComboBox Width="120"
  669.               HorizontalAlignment="Center"
  670.               VerticalAlignment="Center"
  671.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  672.               SelectedItem="{Binding Animal}" />
  673. </Grid><Grid>
  674.     <ComboBox Width="120"
  675.               HorizontalAlignment="Center"
  676.               VerticalAlignment="Center"
  677.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  678.               SelectedItem="{Binding Animal}" />
  679. </Grid>if (!propertyType.IsEnum)
  680. <Grid>
  681.     <ComboBox Width="120"
  682.               HorizontalAlignment="Center"
  683.               VerticalAlignment="Center"
  684.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  685.               SelectedItem="{Binding Animal}" />
  686. </Grid><Grid>
  687.     <ComboBox Width="120"
  688.               HorizontalAlignment="Center"
  689.               VerticalAlignment="Center"
  690.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  691.               SelectedItem="{Binding Animal}" />
  692. </Grid>{
  693. <Grid>
  694.     <ComboBox Width="120"
  695.               HorizontalAlignment="Center"
  696.               VerticalAlignment="Center"
  697.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  698.               SelectedItem="{Binding Animal}" />
  699. </Grid><Grid>
  700.     <ComboBox Width="120"
  701.               HorizontalAlignment="Center"
  702.               VerticalAlignment="Center"
  703.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  704.               SelectedItem="{Binding Animal}" />
  705. </Grid><Grid>
  706.     <ComboBox Width="120"
  707.               HorizontalAlignment="Center"
  708.               VerticalAlignment="Center"
  709.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  710.               SelectedItem="{Binding Animal}" />
  711. </Grid>var underlyingType = Nullable.GetUnderlyingType(propertyType);
  712. <Grid>
  713.     <ComboBox Width="120"
  714.               HorizontalAlignment="Center"
  715.               VerticalAlignment="Center"
  716.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  717.               SelectedItem="{Binding Animal}" />
  718. </Grid><Grid>
  719.     <ComboBox Width="120"
  720.               HorizontalAlignment="Center"
  721.               VerticalAlignment="Center"
  722.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  723.               SelectedItem="{Binding Animal}" />
  724. </Grid><Grid>
  725.     <ComboBox Width="120"
  726.               HorizontalAlignment="Center"
  727.               VerticalAlignment="Center"
  728.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  729.               SelectedItem="{Binding Animal}" />
  730. </Grid>if (underlyingType == null)
  731. <Grid>
  732.     <ComboBox Width="120"
  733.               HorizontalAlignment="Center"
  734.               VerticalAlignment="Center"
  735.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  736.               SelectedItem="{Binding Animal}" />
  737. </Grid><Grid>
  738.     <ComboBox Width="120"
  739.               HorizontalAlignment="Center"
  740.               VerticalAlignment="Center"
  741.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  742.               SelectedItem="{Binding Animal}" />
  743. </Grid><Grid>
  744.     <ComboBox Width="120"
  745.               HorizontalAlignment="Center"
  746.               VerticalAlignment="Center"
  747.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  748.               SelectedItem="{Binding Animal}" />
  749. </Grid>{
  750. <Grid>
  751.     <ComboBox Width="120"
  752.               HorizontalAlignment="Center"
  753.               VerticalAlignment="Center"
  754.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  755.               SelectedItem="{Binding Animal}" />
  756. </Grid><Grid>
  757.     <ComboBox Width="120"
  758.               HorizontalAlignment="Center"
  759.               VerticalAlignment="Center"
  760.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  761.               SelectedItem="{Binding Animal}" />
  762. </Grid><Grid>
  763.     <ComboBox Width="120"
  764.               HorizontalAlignment="Center"
  765.               VerticalAlignment="Center"
  766.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  767.               SelectedItem="{Binding Animal}" />
  768. </Grid><Grid>
  769.     <ComboBox Width="120"
  770.               HorizontalAlignment="Center"
  771.               VerticalAlignment="Center"
  772.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  773.               SelectedItem="{Binding Animal}" />
  774. </Grid>return;
  775. <Grid>
  776.     <ComboBox Width="120"
  777.               HorizontalAlignment="Center"
  778.               VerticalAlignment="Center"
  779.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  780.               SelectedItem="{Binding Animal}" />
  781. </Grid><Grid>
  782.     <ComboBox Width="120"
  783.               HorizontalAlignment="Center"
  784.               VerticalAlignment="Center"
  785.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  786.               SelectedItem="{Binding Animal}" />
  787. </Grid><Grid>
  788.     <ComboBox Width="120"
  789.               HorizontalAlignment="Center"
  790.               VerticalAlignment="Center"
  791.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  792.               SelectedItem="{Binding Animal}" />
  793. </Grid>}
  794. <Grid>
  795.     <ComboBox Width="120"
  796.               HorizontalAlignment="Center"
  797.               VerticalAlignment="Center"
  798.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  799.               SelectedItem="{Binding Animal}" />
  800. </Grid><Grid>
  801.     <ComboBox Width="120"
  802.               HorizontalAlignment="Center"
  803.               VerticalAlignment="Center"
  804.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  805.               SelectedItem="{Binding Animal}" />
  806. </Grid><Grid>
  807.     <ComboBox Width="120"
  808.               HorizontalAlignment="Center"
  809.               VerticalAlignment="Center"
  810.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  811.               SelectedItem="{Binding Animal}" />
  812. </Grid>propertyType = underlyingType;
  813. <Grid>
  814.     <ComboBox Width="120"
  815.               HorizontalAlignment="Center"
  816.               VerticalAlignment="Center"
  817.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  818.               SelectedItem="{Binding Animal}" />
  819. </Grid><Grid>
  820.     <ComboBox Width="120"
  821.               HorizontalAlignment="Center"
  822.               VerticalAlignment="Center"
  823.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  824.               SelectedItem="{Binding Animal}" />
  825. </Grid>}
  826. <Grid>
  827.     <ComboBox Width="120"
  828.               HorizontalAlignment="Center"
  829.               VerticalAlignment="Center"
  830.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  831.               SelectedItem="{Binding Animal}" />
  832. </Grid><Grid>
  833.     <ComboBox Width="120"
  834.               HorizontalAlignment="Center"
  835.               VerticalAlignment="Center"
  836.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  837.               SelectedItem="{Binding Animal}" />
  838. </Grid>var itemsSourceBinding = new Binding();
  839. <Grid>
  840.     <ComboBox Width="120"
  841.               HorizontalAlignment="Center"
  842.               VerticalAlignment="Center"
  843.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  844.               SelectedItem="{Binding Animal}" />
  845. </Grid><Grid>
  846.     <ComboBox Width="120"
  847.               HorizontalAlignment="Center"
  848.               VerticalAlignment="Center"
  849.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  850.               SelectedItem="{Binding Animal}" />
  851. </Grid>itemsSourceBinding.Source = Enum.GetValues(propertyType);
  852. <Grid>
  853.     <ComboBox Width="120"
  854.               HorizontalAlignment="Center"
  855.               VerticalAlignment="Center"
  856.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  857.               SelectedItem="{Binding Animal}" />
  858. </Grid><Grid>
  859.     <ComboBox Width="120"
  860.               HorizontalAlignment="Center"
  861.               VerticalAlignment="Center"
  862.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  863.               SelectedItem="{Binding Animal}" />
  864. </Grid>itemsSourceBinding.Mode = BindingMode.OneWay;
  865. <Grid>
  866.     <ComboBox Width="120"
  867.               HorizontalAlignment="Center"
  868.               VerticalAlignment="Center"
  869.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  870.               SelectedItem="{Binding Animal}" />
  871. </Grid><Grid>
  872.     <ComboBox Width="120"
  873.               HorizontalAlignment="Center"
  874.               VerticalAlignment="Center"
  875.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  876.               SelectedItem="{Binding Animal}" />
  877. </Grid>itemsControl.SetBinding(ItemsControl.ItemsSourceProperty, itemsSourceBinding);
  878. <Grid>
  879.     <ComboBox Width="120"
  880.               HorizontalAlignment="Center"
  881.               VerticalAlignment="Center"
  882.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  883.               SelectedItem="{Binding Animal}" />
  884. </Grid>}
  885. <Grid>
  886.     <ComboBox Width="120"
  887.               HorizontalAlignment="Center"
  888.               VerticalAlignment="Center"
  889.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  890.               SelectedItem="{Binding Animal}" />
  891. </Grid>private static void ComboBox_Loaded(object sender, RoutedEventArgs e)
  892. <Grid>
  893.     <ComboBox Width="120"
  894.               HorizontalAlignment="Center"
  895.               VerticalAlignment="Center"
  896.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  897.               SelectedItem="{Binding Animal}" />
  898. </Grid>{
  899. <Grid>
  900.     <ComboBox Width="120"
  901.               HorizontalAlignment="Center"
  902.               VerticalAlignment="Center"
  903.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  904.               SelectedItem="{Binding Animal}" />
  905. </Grid><Grid>
  906.     <ComboBox Width="120"
  907.               HorizontalAlignment="Center"
  908.               VerticalAlignment="Center"
  909.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  910.               SelectedItem="{Binding Animal}" />
  911. </Grid>var itemsControl = (ItemsControl)sender;
  912. <Grid>
  913.     <ComboBox Width="120"
  914.               HorizontalAlignment="Center"
  915.               VerticalAlignment="Center"
  916.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  917.               SelectedItem="{Binding Animal}" />
  918. </Grid><Grid>
  919.     <ComboBox Width="120"
  920.               HorizontalAlignment="Center"
  921.               VerticalAlignment="Center"
  922.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  923.               SelectedItem="{Binding Animal}" />
  924. </Grid>itemsControl.Loaded -= ComboBox_Loaded;
  925. <Grid>
  926.     <ComboBox Width="120"
  927.               HorizontalAlignment="Center"
  928.               VerticalAlignment="Center"
  929.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  930.               SelectedItem="{Binding Animal}" />
  931. </Grid><Grid>
  932.     <ComboBox Width="120"
  933.               HorizontalAlignment="Center"
  934.               VerticalAlignment="Center"
  935.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  936.               SelectedItem="{Binding Animal}" />
  937. </Grid>SetComboBoxItemsSource(itemsControl);
  938. <Grid>
  939.     <ComboBox Width="120"
  940.               HorizontalAlignment="Center"
  941.               VerticalAlignment="Center"
  942.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  943.               SelectedItem="{Binding Animal}" />
  944. </Grid>}
  945. }
复制代码
 
viewmodel 代码创建 枚举类型属性
  1. public class MainViewModel : ObservableObject
  2. {
  3. <Grid>
  4.     <ComboBox Width="120"
  5.               HorizontalAlignment="Center"
  6.               VerticalAlignment="Center"
  7.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  8.               SelectedItem="{Binding Animal}" />
  9. </Grid>private Animal animal;
  10. <Grid>
  11.     <ComboBox Width="120"
  12.               HorizontalAlignment="Center"
  13.               VerticalAlignment="Center"
  14.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  15.               SelectedItem="{Binding Animal}" />
  16. </Grid>public Animal Animal
  17. <Grid>
  18.     <ComboBox Width="120"
  19.               HorizontalAlignment="Center"
  20.               VerticalAlignment="Center"
  21.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  22.               SelectedItem="{Binding Animal}" />
  23. </Grid>{
  24. <Grid>
  25.     <ComboBox Width="120"
  26.               HorizontalAlignment="Center"
  27.               VerticalAlignment="Center"
  28.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  29.               SelectedItem="{Binding Animal}" />
  30. </Grid><Grid>
  31.     <ComboBox Width="120"
  32.               HorizontalAlignment="Center"
  33.               VerticalAlignment="Center"
  34.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  35.               SelectedItem="{Binding Animal}" />
  36. </Grid>get { return animal; }
  37. <Grid>
  38.     <ComboBox Width="120"
  39.               HorizontalAlignment="Center"
  40.               VerticalAlignment="Center"
  41.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  42.               SelectedItem="{Binding Animal}" />
  43. </Grid><Grid>
  44.     <ComboBox Width="120"
  45.               HorizontalAlignment="Center"
  46.               VerticalAlignment="Center"
  47.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  48.               SelectedItem="{Binding Animal}" />
  49. </Grid>set { SetProperty(ref animal, value); }
  50. <Grid>
  51.     <ComboBox Width="120"
  52.               HorizontalAlignment="Center"
  53.               VerticalAlignment="Center"
  54.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  55.               SelectedItem="{Binding Animal}" />
  56. </Grid>}
  57. }
  58. public enum Animal
  59. {
  60. <Grid>
  61.     <ComboBox Width="120"
  62.               HorizontalAlignment="Center"
  63.               VerticalAlignment="Center"
  64.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  65.               SelectedItem="{Binding Animal}" />
  66. </Grid>Dog = 0,
  67. <Grid>
  68.     <ComboBox Width="120"
  69.               HorizontalAlignment="Center"
  70.               VerticalAlignment="Center"
  71.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  72.               SelectedItem="{Binding Animal}" />
  73. </Grid>Cat,
  74. <Grid>
  75.     <ComboBox Width="120"
  76.               HorizontalAlignment="Center"
  77.               VerticalAlignment="Center"
  78.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  79.               SelectedItem="{Binding Animal}" />
  80. </Grid>Elephant,
  81. <Grid>
  82.     <ComboBox Width="120"
  83.               HorizontalAlignment="Center"
  84.               VerticalAlignment="Center"
  85.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  86.               SelectedItem="{Binding Animal}" />
  87. </Grid>Bird,
  88. <Grid>
  89.     <ComboBox Width="120"
  90.               HorizontalAlignment="Center"
  91.               VerticalAlignment="Center"
  92.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  93.               SelectedItem="{Binding Animal}" />
  94. </Grid>Lion,
  95. <Grid>
  96.     <ComboBox Width="120"
  97.               HorizontalAlignment="Center"
  98.               VerticalAlignment="Center"
  99.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  100.               SelectedItem="{Binding Animal}" />
  101. </Grid>Tiger
  102. }
复制代码
前端 xaml 代码,将 ComboBox.SelectedItem 绑定枚举属性,并设置 ItemsControlHelper.EnumValuesToItemsSource="True"
  1. <Grid>
  2.     <ComboBox Width="120"
  3.               HorizontalAlignment="Center"
  4.               VerticalAlignment="Center"
  5.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  6.               SelectedItem="{Binding Animal}" />
  7. </Grid>
复制代码
运行代码,自动加载枚举值集合到 ComboBox.ItemsSource


 
 
还可以添加 TypeConverter 的方式显示为自定义字符串,新增一个 EnumDescriptionConverter .cs
  1. public class EnumDescriptionConverter : EnumConverter{<Grid>
  2.     <ComboBox Width="120"
  3.               HorizontalAlignment="Center"
  4.               VerticalAlignment="Center"
  5.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  6.               SelectedItem="{Binding Animal}" />
  7. </Grid>public EnumDescriptionConverter(Type type)<Grid>
  8.     <ComboBox Width="120"
  9.               HorizontalAlignment="Center"
  10.               VerticalAlignment="Center"
  11.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  12.               SelectedItem="{Binding Animal}" />
  13. </Grid><Grid>
  14.     <ComboBox Width="120"
  15.               HorizontalAlignment="Center"
  16.               VerticalAlignment="Center"
  17.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  18.               SelectedItem="{Binding Animal}" />
  19. </Grid>: base(type)<Grid>
  20.     <ComboBox Width="120"
  21.               HorizontalAlignment="Center"
  22.               VerticalAlignment="Center"
  23.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  24.               SelectedItem="{Binding Animal}" />
  25. </Grid>{<Grid>
  26.     <ComboBox Width="120"
  27.               HorizontalAlignment="Center"
  28.               VerticalAlignment="Center"
  29.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  30.               SelectedItem="{Binding Animal}" />
  31. </Grid>}<Grid>
  32.     <ComboBox Width="120"
  33.               HorizontalAlignment="Center"
  34.               VerticalAlignment="Center"
  35.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  36.               SelectedItem="{Binding Animal}" />
  37. </Grid>///<Grid>
  38.     <ComboBox Width="120"
  39.               HorizontalAlignment="Center"
  40.               VerticalAlignment="Center"
  41.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  42.               SelectedItem="{Binding Animal}" />
  43. </Grid> public override object ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type? destinationType)<Grid>
  44.     <ComboBox Width="120"
  45.               HorizontalAlignment="Center"
  46.               VerticalAlignment="Center"
  47.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  48.               SelectedItem="{Binding Animal}" />
  49. </Grid>{<Grid>
  50.     <ComboBox Width="120"
  51.               HorizontalAlignment="Center"
  52.               VerticalAlignment="Center"
  53.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  54.               SelectedItem="{Binding Animal}" />
  55. </Grid><Grid>
  56.     <ComboBox Width="120"
  57.               HorizontalAlignment="Center"
  58.               VerticalAlignment="Center"
  59.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  60.               SelectedItem="{Binding Animal}" />
  61. </Grid>if (destinationType == typeof(string))<Grid>
  62.     <ComboBox Width="120"
  63.               HorizontalAlignment="Center"
  64.               VerticalAlignment="Center"
  65.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  66.               SelectedItem="{Binding Animal}" />
  67. </Grid><Grid>
  68.     <ComboBox Width="120"
  69.               HorizontalAlignment="Center"
  70.               VerticalAlignment="Center"
  71.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  72.               SelectedItem="{Binding Animal}" />
  73. </Grid>{<Grid>
  74.     <ComboBox Width="120"
  75.               HorizontalAlignment="Center"
  76.               VerticalAlignment="Center"
  77.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  78.               SelectedItem="{Binding Animal}" />
  79. </Grid><Grid>
  80.     <ComboBox Width="120"
  81.               HorizontalAlignment="Center"
  82.               VerticalAlignment="Center"
  83.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  84.               SelectedItem="{Binding Animal}" />
  85. </Grid><Grid>
  86.     <ComboBox Width="120"
  87.               HorizontalAlignment="Center"
  88.               VerticalAlignment="Center"
  89.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  90.               SelectedItem="{Binding Animal}" />
  91. </Grid>if (value != null)<Grid>
  92.     <ComboBox Width="120"
  93.               HorizontalAlignment="Center"
  94.               VerticalAlignment="Center"
  95.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  96.               SelectedItem="{Binding Animal}" />
  97. </Grid><Grid>
  98.     <ComboBox Width="120"
  99.               HorizontalAlignment="Center"
  100.               VerticalAlignment="Center"
  101.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  102.               SelectedItem="{Binding Animal}" />
  103. </Grid><Grid>
  104.     <ComboBox Width="120"
  105.               HorizontalAlignment="Center"
  106.               VerticalAlignment="Center"
  107.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  108.               SelectedItem="{Binding Animal}" />
  109. </Grid>{<Grid>
  110.     <ComboBox Width="120"
  111.               HorizontalAlignment="Center"
  112.               VerticalAlignment="Center"
  113.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  114.               SelectedItem="{Binding Animal}" />
  115. </Grid><Grid>
  116.     <ComboBox Width="120"
  117.               HorizontalAlignment="Center"
  118.               VerticalAlignment="Center"
  119.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  120.               SelectedItem="{Binding Animal}" />
  121. </Grid><Grid>
  122.     <ComboBox Width="120"
  123.               HorizontalAlignment="Center"
  124.               VerticalAlignment="Center"
  125.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  126.               SelectedItem="{Binding Animal}" />
  127. </Grid><Grid>
  128.     <ComboBox Width="120"
  129.               HorizontalAlignment="Center"
  130.               VerticalAlignment="Center"
  131.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  132.               SelectedItem="{Binding Animal}" />
  133. </Grid>FieldInfo? fieldInfo = value.GetType()!.GetField(value.ToString()!);<Grid>
  134.     <ComboBox Width="120"
  135.               HorizontalAlignment="Center"
  136.               VerticalAlignment="Center"
  137.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  138.               SelectedItem="{Binding Animal}" />
  139. </Grid><Grid>
  140.     <ComboBox Width="120"
  141.               HorizontalAlignment="Center"
  142.               VerticalAlignment="Center"
  143.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  144.               SelectedItem="{Binding Animal}" />
  145. </Grid><Grid>
  146.     <ComboBox Width="120"
  147.               HorizontalAlignment="Center"
  148.               VerticalAlignment="Center"
  149.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  150.               SelectedItem="{Binding Animal}" />
  151. </Grid><Grid>
  152.     <ComboBox Width="120"
  153.               HorizontalAlignment="Center"
  154.               VerticalAlignment="Center"
  155.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  156.               SelectedItem="{Binding Animal}" />
  157. </Grid>if (fieldInfo != null)<Grid>
  158.     <ComboBox Width="120"
  159.               HorizontalAlignment="Center"
  160.               VerticalAlignment="Center"
  161.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  162.               SelectedItem="{Binding Animal}" />
  163. </Grid><Grid>
  164.     <ComboBox Width="120"
  165.               HorizontalAlignment="Center"
  166.               VerticalAlignment="Center"
  167.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  168.               SelectedItem="{Binding Animal}" />
  169. </Grid><Grid>
  170.     <ComboBox Width="120"
  171.               HorizontalAlignment="Center"
  172.               VerticalAlignment="Center"
  173.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  174.               SelectedItem="{Binding Animal}" />
  175. </Grid><Grid>
  176.     <ComboBox Width="120"
  177.               HorizontalAlignment="Center"
  178.               VerticalAlignment="Center"
  179.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  180.               SelectedItem="{Binding Animal}" />
  181. </Grid>{<Grid>
  182.     <ComboBox Width="120"
  183.               HorizontalAlignment="Center"
  184.               VerticalAlignment="Center"
  185.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  186.               SelectedItem="{Binding Animal}" />
  187. </Grid><Grid>
  188.     <ComboBox Width="120"
  189.               HorizontalAlignment="Center"
  190.               VerticalAlignment="Center"
  191.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  192.               SelectedItem="{Binding Animal}" />
  193. </Grid><Grid>
  194.     <ComboBox Width="120"
  195.               HorizontalAlignment="Center"
  196.               VerticalAlignment="Center"
  197.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  198.               SelectedItem="{Binding Animal}" />
  199. </Grid><Grid>
  200.     <ComboBox Width="120"
  201.               HorizontalAlignment="Center"
  202.               VerticalAlignment="Center"
  203.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  204.               SelectedItem="{Binding Animal}" />
  205. </Grid><Grid>
  206.     <ComboBox Width="120"
  207.               HorizontalAlignment="Center"
  208.               VerticalAlignment="Center"
  209.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  210.               SelectedItem="{Binding Animal}" />
  211. </Grid>var attribute = fieldInfo.GetCustomAttribute(inherit: false);<Grid>
  212.     <ComboBox Width="120"
  213.               HorizontalAlignment="Center"
  214.               VerticalAlignment="Center"
  215.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  216.               SelectedItem="{Binding Animal}" />
  217. </Grid><Grid>
  218.     <ComboBox Width="120"
  219.               HorizontalAlignment="Center"
  220.               VerticalAlignment="Center"
  221.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  222.               SelectedItem="{Binding Animal}" />
  223. </Grid><Grid>
  224.     <ComboBox Width="120"
  225.               HorizontalAlignment="Center"
  226.               VerticalAlignment="Center"
  227.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  228.               SelectedItem="{Binding Animal}" />
  229. </Grid><Grid>
  230.     <ComboBox Width="120"
  231.               HorizontalAlignment="Center"
  232.               VerticalAlignment="Center"
  233.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  234.               SelectedItem="{Binding Animal}" />
  235. </Grid><Grid>
  236.     <ComboBox Width="120"
  237.               HorizontalAlignment="Center"
  238.               VerticalAlignment="Center"
  239.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  240.               SelectedItem="{Binding Animal}" />
  241. </Grid>if (attribute != null)<Grid>
  242.     <ComboBox Width="120"
  243.               HorizontalAlignment="Center"
  244.               VerticalAlignment="Center"
  245.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  246.               SelectedItem="{Binding Animal}" />
  247. </Grid><Grid>
  248.     <ComboBox Width="120"
  249.               HorizontalAlignment="Center"
  250.               VerticalAlignment="Center"
  251.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  252.               SelectedItem="{Binding Animal}" />
  253. </Grid><Grid>
  254.     <ComboBox Width="120"
  255.               HorizontalAlignment="Center"
  256.               VerticalAlignment="Center"
  257.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  258.               SelectedItem="{Binding Animal}" />
  259. </Grid><Grid>
  260.     <ComboBox Width="120"
  261.               HorizontalAlignment="Center"
  262.               VerticalAlignment="Center"
  263.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  264.               SelectedItem="{Binding Animal}" />
  265. </Grid><Grid>
  266.     <ComboBox Width="120"
  267.               HorizontalAlignment="Center"
  268.               VerticalAlignment="Center"
  269.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  270.               SelectedItem="{Binding Animal}" />
  271. </Grid>{<Grid>
  272.     <ComboBox Width="120"
  273.               HorizontalAlignment="Center"
  274.               VerticalAlignment="Center"
  275.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  276.               SelectedItem="{Binding Animal}" />
  277. </Grid><Grid>
  278.     <ComboBox Width="120"
  279.               HorizontalAlignment="Center"
  280.               VerticalAlignment="Center"
  281.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  282.               SelectedItem="{Binding Animal}" />
  283. </Grid><Grid>
  284.     <ComboBox Width="120"
  285.               HorizontalAlignment="Center"
  286.               VerticalAlignment="Center"
  287.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  288.               SelectedItem="{Binding Animal}" />
  289. </Grid><Grid>
  290.     <ComboBox Width="120"
  291.               HorizontalAlignment="Center"
  292.               VerticalAlignment="Center"
  293.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  294.               SelectedItem="{Binding Animal}" />
  295. </Grid><Grid>
  296.     <ComboBox Width="120"
  297.               HorizontalAlignment="Center"
  298.               VerticalAlignment="Center"
  299.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  300.               SelectedItem="{Binding Animal}" />
  301. </Grid><Grid>
  302.     <ComboBox Width="120"
  303.               HorizontalAlignment="Center"
  304.               VerticalAlignment="Center"
  305.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  306.               SelectedItem="{Binding Animal}" />
  307. </Grid>return !string.IsNullOrEmpty(attribute.Description) ? attribute.Description : value.ToString()!;<Grid>
  308.     <ComboBox Width="120"
  309.               HorizontalAlignment="Center"
  310.               VerticalAlignment="Center"
  311.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  312.               SelectedItem="{Binding Animal}" />
  313. </Grid><Grid>
  314.     <ComboBox Width="120"
  315.               HorizontalAlignment="Center"
  316.               VerticalAlignment="Center"
  317.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  318.               SelectedItem="{Binding Animal}" />
  319. </Grid><Grid>
  320.     <ComboBox Width="120"
  321.               HorizontalAlignment="Center"
  322.               VerticalAlignment="Center"
  323.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  324.               SelectedItem="{Binding Animal}" />
  325. </Grid><Grid>
  326.     <ComboBox Width="120"
  327.               HorizontalAlignment="Center"
  328.               VerticalAlignment="Center"
  329.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  330.               SelectedItem="{Binding Animal}" />
  331. </Grid><Grid>
  332.     <ComboBox Width="120"
  333.               HorizontalAlignment="Center"
  334.               VerticalAlignment="Center"
  335.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  336.               SelectedItem="{Binding Animal}" />
  337. </Grid>}<Grid>
  338.     <ComboBox Width="120"
  339.               HorizontalAlignment="Center"
  340.               VerticalAlignment="Center"
  341.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  342.               SelectedItem="{Binding Animal}" />
  343. </Grid><Grid>
  344.     <ComboBox Width="120"
  345.               HorizontalAlignment="Center"
  346.               VerticalAlignment="Center"
  347.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  348.               SelectedItem="{Binding Animal}" />
  349. </Grid><Grid>
  350.     <ComboBox Width="120"
  351.               HorizontalAlignment="Center"
  352.               VerticalAlignment="Center"
  353.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  354.               SelectedItem="{Binding Animal}" />
  355. </Grid><Grid>
  356.     <ComboBox Width="120"
  357.               HorizontalAlignment="Center"
  358.               VerticalAlignment="Center"
  359.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  360.               SelectedItem="{Binding Animal}" />
  361. </Grid>}<Grid>
  362.     <ComboBox Width="120"
  363.               HorizontalAlignment="Center"
  364.               VerticalAlignment="Center"
  365.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  366.               SelectedItem="{Binding Animal}" />
  367. </Grid><Grid>
  368.     <ComboBox Width="120"
  369.               HorizontalAlignment="Center"
  370.               VerticalAlignment="Center"
  371.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  372.               SelectedItem="{Binding Animal}" />
  373. </Grid><Grid>
  374.     <ComboBox Width="120"
  375.               HorizontalAlignment="Center"
  376.               VerticalAlignment="Center"
  377.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  378.               SelectedItem="{Binding Animal}" />
  379. </Grid><Grid>
  380.     <ComboBox Width="120"
  381.               HorizontalAlignment="Center"
  382.               VerticalAlignment="Center"
  383.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  384.               SelectedItem="{Binding Animal}" />
  385. </Grid>return value.ToString()!;<Grid>
  386.     <ComboBox Width="120"
  387.               HorizontalAlignment="Center"
  388.               VerticalAlignment="Center"
  389.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  390.               SelectedItem="{Binding Animal}" />
  391. </Grid><Grid>
  392.     <ComboBox Width="120"
  393.               HorizontalAlignment="Center"
  394.               VerticalAlignment="Center"
  395.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  396.               SelectedItem="{Binding Animal}" />
  397. </Grid><Grid>
  398.     <ComboBox Width="120"
  399.               HorizontalAlignment="Center"
  400.               VerticalAlignment="Center"
  401.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  402.               SelectedItem="{Binding Animal}" />
  403. </Grid>}<Grid>
  404.     <ComboBox Width="120"
  405.               HorizontalAlignment="Center"
  406.               VerticalAlignment="Center"
  407.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  408.               SelectedItem="{Binding Animal}" />
  409. </Grid><Grid>
  410.     <ComboBox Width="120"
  411.               HorizontalAlignment="Center"
  412.               VerticalAlignment="Center"
  413.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  414.               SelectedItem="{Binding Animal}" />
  415. </Grid>}<Grid>
  416.     <ComboBox Width="120"
  417.               HorizontalAlignment="Center"
  418.               VerticalAlignment="Center"
  419.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  420.               SelectedItem="{Binding Animal}" />
  421. </Grid><Grid>
  422.     <ComboBox Width="120"
  423.               HorizontalAlignment="Center"
  424.               VerticalAlignment="Center"
  425.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  426.               SelectedItem="{Binding Animal}" />
  427. </Grid>return string.Empty;<Grid>
  428.     <ComboBox Width="120"
  429.               HorizontalAlignment="Center"
  430.               VerticalAlignment="Center"
  431.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  432.               SelectedItem="{Binding Animal}" />
  433. </Grid>}}
复制代码
枚举添加 Attribute 注释内容
  1. [TypeConverter(typeof(EnumDescriptionConverter))]public enum Animal{<Grid>
  2.     <ComboBox Width="120"
  3.               HorizontalAlignment="Center"
  4.               VerticalAlignment="Center"
  5.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  6.               SelectedItem="{Binding Animal}" />
  7. </Grid>[Description("小狗")]<Grid>
  8.     <ComboBox Width="120"
  9.               HorizontalAlignment="Center"
  10.               VerticalAlignment="Center"
  11.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  12.               SelectedItem="{Binding Animal}" />
  13. </Grid>Dog = 0,<Grid>
  14.     <ComboBox Width="120"
  15.               HorizontalAlignment="Center"
  16.               VerticalAlignment="Center"
  17.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  18.               SelectedItem="{Binding Animal}" />
  19. </Grid>[Description("小猫")]<Grid>
  20.     <ComboBox Width="120"
  21.               HorizontalAlignment="Center"
  22.               VerticalAlignment="Center"
  23.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  24.               SelectedItem="{Binding Animal}" />
  25. </Grid>Cat,<Grid>
  26.     <ComboBox Width="120"
  27.               HorizontalAlignment="Center"
  28.               VerticalAlignment="Center"
  29.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  30.               SelectedItem="{Binding Animal}" />
  31. </Grid>[Description("大象")]<Grid>
  32.     <ComboBox Width="120"
  33.               HorizontalAlignment="Center"
  34.               VerticalAlignment="Center"
  35.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  36.               SelectedItem="{Binding Animal}" />
  37. </Grid>Elephant,<Grid>
  38.     <ComboBox Width="120"
  39.               HorizontalAlignment="Center"
  40.               VerticalAlignment="Center"
  41.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  42.               SelectedItem="{Binding Animal}" />
  43. </Grid>[Description("小鸟")]<Grid>
  44.     <ComboBox Width="120"
  45.               HorizontalAlignment="Center"
  46.               VerticalAlignment="Center"
  47.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  48.               SelectedItem="{Binding Animal}" />
  49. </Grid>Bird,<Grid>
  50.     <ComboBox Width="120"
  51.               HorizontalAlignment="Center"
  52.               VerticalAlignment="Center"
  53.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  54.               SelectedItem="{Binding Animal}" />
  55. </Grid>[Description("狮子")]<Grid>
  56.     <ComboBox Width="120"
  57.               HorizontalAlignment="Center"
  58.               VerticalAlignment="Center"
  59.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  60.               SelectedItem="{Binding Animal}" />
  61. </Grid>Lion,<Grid>
  62.     <ComboBox Width="120"
  63.               HorizontalAlignment="Center"
  64.               VerticalAlignment="Center"
  65.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  66.               SelectedItem="{Binding Animal}" />
  67. </Grid>[Description("小脑斧")]<Grid>
  68.     <ComboBox Width="120"
  69.               HorizontalAlignment="Center"
  70.               VerticalAlignment="Center"
  71.               local:ItemsControlHelper.EnumValuesToItemsSource="True"
  72.               SelectedItem="{Binding Animal}" />
  73. </Grid>Tiger}
复制代码
再次运行代码结果

 
同理继承 Selector 的控件也可以使用,例如 ListBox :

总结

最后只需要添加一行代码 local:ItemsControlHelper.EnumValuesToItemsSource="True",就可以自动绑定 ItemsSource,xaml 代码不需要再去关注 enum 的类型。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

老婆出轨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表