2012-04-19 2 views
0

하나의 쿼리 TextBox와 4 개의 단추가있는 대화 상자가 있습니다. 쿼리 결과에 따라 하나 이상의 단추가 활성화됩니다. 텍스트 상자는 QueryResult에 따라뷰 모델 상태에 따라 기본 단추 (IsDefault) 변경

Command.IsEnabled 변화를 VM의 속성에 바인딩되며, 각각의 버튼은 VM에 명령에 바인딩

class ViewModel 
{ 
    public string Query {get;set;} 
    public QueryResult QueryResult {get;set;} 
    public ICommand FooCommand {get;set;} 
    public ICommand BarCommand {get;set;} 
    public ICommand BazCommand {get;set;} 
    public ICommand QuxCommand {get;set;} 
} 

<TextBox Text="{Binding Query, UpdateSourceTrigger=PropertyChanged}"/> 
<Button Command="{Binding FooCommand}" Content="Foo"/> 
<Button Command="{Binding BarCommand}" Content="Bar"/> 
<Button Command="{Binding BazCommand}" Content="Baz"/> 
<Button Command="{Binding QuxCommand}" Content="Qux"/> 

의 결정하는 추가 로직이있다 (Foo는 항상 사용 가능하며, QueryResult.A가 널이 아닌 경우 Bar가 사용 가능하고, QueryResult.B가 널이 아닌 경우 Baz가 사용 가능합니다. 여러 명령을 사용할 수 있지만 우선 순위가 고정 된 우선 순위가 있습니다. NES 기본 동작)

바> 바즈> 푸> Qux

내 문제는 하나 기본적으로해야하는 반영하기 위해 버튼에 Button.IsDefault을 바인딩하는 방법이다.

나는 다음과 같은 옵션을 생각하지 한 - 어느 것도 바로

  1. 열거 속성은 VM에 {인 btn1, btn2, btn3, btn4} defaultButton의 만들기 보인다.

  2. 가 등등 VM IsButton1Default 4 개 개의 부울 속성 만들기 현재 값의 매개 변수를 비교하는 컨버터이 각 버튼을 IsDefault 속성을 바인딩 ...과 스타일 + datatriggers 이러한

  3. 뭔가에 결합하지만, 내 XAML을 이해하기 어렵게 만듭니다.

어떻게 하시겠습니까?

답변

0

나는 논리의이 종류를위한 변환기를 좋아하지 않기 때문에 나는 2를 선택할 것입니다. unittest하기 쉽고 이해하기 쉽고 구현하기가 쉽습니다.

관련 문제