2013-11-27 2 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" }); 
    } 

그것이 올바른 접근 방식인가? 어떤 솔루션이 더 쉬울까요? WPF에서

감사

+0

당신의 코드가 작동한다면, 이것은 [Code Review] (http : //codereview.stackexchange. com). – paqogomez

+0

안녕하세요 Paco, 코드 검토를 알지 못했습니다. 네 고마워. 나는 그것을 거기에 게시한다. 고마워 – MrScf

답변

0

더 자연적인 방법은 Value Converter을 사용하는 것입니다. 즉, 속성 값이 UI 객체에 바인딩되는 방식을 조작하는 객체입니다. (- 확실히 더 접근이 단지 예를 들어)이 0 또는 1에 부울로 변환 할 변환기를 만들고 그런 다음 미리 정의 된 텍스트와 ComboBoxSelectedIndex에 해당 속성을 바인딩 할 수 있다는 것을 의미합니다 귀하의 경우에는

해당 변환기의 Nein/Ja 값 (올바른 색인에 있음).


관련없는 것 : 영어가 아닌 다른 언어로 GUI 텍스트로 앱을 개발하는 경우 키를 영어 이름이 포함 된 리소스 파일로 이동하여 독일어를 사용하지 않는 사람들이 코드에 쉽게 액세스 할 수 있도록하는 것이 좋습니다. 예를 들면. 그것은 당신이 그것을 필요로하지 않을 수도 있습니다, 나는 단지 내가 그것을 언급해야한다고 느꼈다. :)

관련 문제