概述
ComboBox绑定枚举量的方法有很多,今天列举比较常用的两种,希望对读者们一些帮助!
代码讲解
前台XMAL:
<StackPanel><ComboBox Name="EvenType1" SelectedIndex="0" Margin="5"/><ComboBox Name="EvenType2" SelectedIndex="0" Margin="5"/></StackPanel>
这里因为我使用了Calibrun.Micro WPF框架,他可以通过名称实现自动绑定。
后台cs代码:
using Caburn.Micro.Hello.Helper;
using System;namespace Caliburn.Micro.Hello.ViewModels
{public class ComboboxViewModel : Screen, IViewModel{public BindableCollection<EvenType> EvenType1 { get; set; } = BindableCollectionHelper.Create<EvenType>();public BindableCollection<EvenType> EvenType2 { get; set; } = new BindableCollection<EvenType>();public ComboboxViewModel(){DisplayName = "ComboboxBinding";foreach (EvenType evenType in Enum.GetValues(typeof(EvenType))){EvenType2.Add(evenType);}}}
}
这里第一种方法借助了集合的扩展方法实现:
public static class BindableCollectionHelper{/// <summary>/// 根据传入枚举类型,返回枚举的BindableCollection/// </summary>/// <typeparam name="TEnum">指定的枚举类型</typeparam>/// <returns>指定枚举的BindableCollection</returns>public static BindableCollection<TEnum> Create<TEnum>() where TEnum : Enum{var itemSource = new BindableCollection<TEnum>();foreach (var item in Enum.GetNames(typeof(TEnum))){itemSource.Add((TEnum)Enum.Parse(typeof(TEnum), item));};return itemSource;}}
这样写的好处就是通用性比较强,封装好以后多个地方都可以公用。
第二种方法通过遍历枚举进行添加
foreach (EvenType evenType in Enum.GetValues(typeof(EvenType))){EvenType2.Add(evenType);}
以上就是ComboBox枚举量绑定的 两种方法的讲解。