하나의 쿼리 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을 바인딩하는 방법이다.
나는 다음과 같은 옵션을 생각하지 한 - 어느 것도 바로
열거 속성은 VM에 {인 btn1, btn2, btn3, btn4} defaultButton의 만들기 보인다.
가 등등 VM IsButton1Default 4 개 개의 부울 속성 만들기 현재 값의 매개 변수를 비교하는 컨버터이 각 버튼을 IsDefault 속성을 바인딩 ...과 스타일 + datatriggers 이러한
뭔가에 결합하지만, 내 XAML을 이해하기 어렵게 만듭니다.
어떻게 하시겠습니까?