概述
? ? 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枚舉量綁定的 兩種方法的講解。