У меня есть диалог с одним запросом TextBox и четырьмя кнопками. В зависимости от результата запроса одна или несколько кнопок включены. текстовое поле привязан к свойству на виртуальной машине, и каждая из кнопок связаны с командами на ВМИзменение кнопки по умолчанию (IsDefault) на основе состояния viewmodel
Command.IsEnabled изменения, основанные на QueryResult
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 всегда включен, Bar включен, если QueryResult.A не имеет значения null, Baz включен, если QueryResult.B не равен нулю и т. д. Можно включить несколько команд, но есть фиксированный приоритетный порядок предпочтения, который определяет определяет действие по умолчанию)
Bar> Баз> Foo> QUX
Моя проблема заключается в том, чтобы связать Button.IsDefault на кнопках, чтобы отразить, какие один должен быть по умолчанию.
Я не думал о следующих вариантах - ни один из которых, кажется, прямо
Создать перечислимое свойство {btn1, btn2, btn3, btn4} DefaultButton на виртуальной машине. Привязка каждой из кнопок с IsDefault свойство это с преобразователем, который сравнивает свой параметр с текущим значением
Создание четырех логических свойств на VM IsButton1Default и т.д ... и связываются с этими
Что-то со стилями + datatriggers но что затрудняет понимание моего XAML.
Что вы должны сделать?