赞
踩
WPF_ComboBox的MVVM绑定(一)
WPF_ComboBox的MVVM绑定(二)
WPF_ComboBox的MVVM绑定(三)
在第二篇中我们介绍了Enum的绑定,今天我们将Enum结合第一篇的内容进行一个最终版本的绑定。因为大多情况下,我们使用ComboBox还是会有对应的Enum的。
还是第一篇中的这个自定义类:
public class ComboBoxItemModel<T>
{
public string Description { get; set; }
public T SelectedModel { get; set; }
public bool IsEnable { get; set; }
}
因为我们的绑定对象是枚举类型,假设为:
public enum WorkModeE : UInt32
{
SINGLE_FREQ = 0,
DOUBLE_FREQ = 1,
TRIPLE_FREQ = 2,
QUAD_FREQ,
}
那么很显然,泛型T就应该是WorkModeE。
public List<ComboBoxItemMode<WorkModeE>> WorkModes { get; set; } = new List<ComboBoxItemMode<WorkModeE>>(); private void InitWorkMode() { foreach (WorkModeE item in Enum.GetValues(typeof(WorkModeE))) { WorkModes.Add(new ComboBoxItemMode<WorkModeE> { Description = item.ToString(), SelectedModel = item, IsEnable = true }); }; } private WorkModeE workMode = WorkModeE.SINGLE_FREQ;//决定初始化的时候是的WorkMode public WorkModeE WorkMode { get { return workMode; } set { workMode= value; RaisePropertyChanged(); } }
<ComboBox
DisplayMemberPath="Description"
ItemsSource="{Binding WorkModes}"
SelectedValue="{Binding WorkMode}"
SelectedValuePath="SelectedModel">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="IsEnable" Value="{Binding IsEnable }" />
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
如果T类型是枚举,那么其实Description也可以是T类型的,但是为了方便其他类型的绑定,这里还是保留不修改了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。