我有一个Combobox,我想编辑一个布尔值。
<dxe:ComboBoxEdit ItemsSource="{Binding EnumItemsSource}"
DisplayMember="Name"
ValueMember="Id"
IsTextEditable="False"
EditValue="{Binding TargetValue, UpdateSourceTrigger=PropertyChanged}"/>
我的ViewModel:
/// <summary>
/// Contains the ItemsSource for Enums
/// </summary>
public List<EnumItemObject> EnumItemsSource
{
get { return _enumItemsSource; }
set
{
_enumItemsSource = value;
OnPropertyChanged();
}
}
public class EnumItemObject
{
public int Id {get;set;}
public string Name {get;set;}
}
我准备了Combobox ItemsSource的数据:
/// <summary>
/// Sets the value to the properties for the BitTemplate view. (similar with EnumTemplate)
/// </summary>
/// <param name="propertyInfo">a boolean property</param>
private void PrepareDataForBitTemplate(PropertyInfo propertyInfo)
{
TargetValue = (int)propertyInfo.GetValue(_firstSelectedItem);
EnumItemsSource = new List<EnumItemObject>();
EnumItemsSource.Add(new EnumItemObject() { Id = 0, Name = "Nein" });
EnumItemsSource.Add(new EnumItemObject() { Id = 1, Name = "Ja" });
}
方法是否正确?任何解决方案都比较容易吗?
由于
答案 0 :(得分:0)
WPF中更自然的方式是使用 Value Converter 。简而言之,它是一个操纵属性值如何绑定到UI对象的对象。
在你的情况下,这意味着(例如 - 当然有更多的方法)创建一个转换器,它将布尔值转换为0
或1
,然后你可以将该属性绑定到{{带有该转换器的预定义文本Nein / Ja值(在正确的索引上)的SelectedIndex
的1}}。