2012-04-19 2 views
0

У меня есть диалог с одним запросом 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 на кнопках, чтобы отразить, какие один должен быть по умолчанию.

Я не думал о следующих вариантах - ни один из которых, кажется, прямо

  1. Создать перечислимое свойство {btn1, btn2, btn3, btn4} DefaultButton на виртуальной машине. Привязка каждой из кнопок с IsDefault свойство это с преобразователем, который сравнивает свой параметр с текущим значением

  2. Создание четырех логических свойств на VM IsButton1Default и т.д ... и связываются с этими

  3. Что-то со стилями + datatriggers но что затрудняет понимание моего XAML.

Что вы должны сделать?

ответ

0

Я бы выбрал номер 2, потому что мне не нравятся конвертеры для такого рода логики. его также легко устранить и более легко понять и реализовать :)

Смежные вопросы