2013-11-27 154 views
0

我有一個組合框,我想編輯一個布爾值。將布爾值綁定到組合框

 <dxe:ComboBoxEdit ItemsSource="{Binding EnumItemsSource}" 
          DisplayMember="Name" 
          ValueMember="Id" 
          IsTextEditable="False" 
          EditValue="{Binding TargetValue, UpdateSourceTrigger=PropertyChanged}"/> 

我的視圖模型:

/// <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;} 
} 

我準備數據的組合框的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

如果你的代碼工作,這可能是一個更好的問題[代碼評論](http://codereview.stackexchange。 COM)。 – paqogomez

+0

嗨帕克,我不知道代碼審查。謝謝你的提示。我張貼在那裏。謝謝 – MrScf

回答

0

更自然的方式WPF是使用Value Converter。簡而言之,它是一個操作屬性值如何綁定到UI對象的對象。

在你的情況,這意味着(只是舉例 - 當然也有更多的途徑中)創建這將布爾轉換爲01一個轉換器,然後您可以將該屬性綁定到ComboBoxSelectedIndex預先定義的文本Nein/Ja值(在正確的索引上)與該轉換器。


一個不相關的事情:如果您使用另一種語言而不是英語來開發您的應用程序,我會考慮將其移至一個帶有英文名稱的密鑰的資源文件 - 以使代碼更易於不會說德語的人訪問例如。這可能是你不需要它的情況,我只是覺得我應該提到它:)