Как я могу привязать две команды к кнопке WPF? - PullRequest
0 голосов
/ 24 мая 2018

Я использую WPF с шаблоном MVVM.У меня есть кнопка, и у меня есть две команды.Кроме того, у меня есть флажок.И я хочу привязать к кнопке разные команды, в зависимости от того, установлен флажок IsChecked или нет, например,

Если я нажму кнопку, появится окно с сообщением;

, если флажок установлени нажмите мою кнопку, появится новое окно или что-то еще ..

У меня есть решение для этого, но я думаю, что может быть лучшее решение:

Моя ViewModel:

ICommand command1 { get; set; }
ICommand command2 { get; set; }
ICommand commandSelector
{
    get
    {
        if (checkbox)
        {
            return command1;
        }
        else
        {
            return command2;
        }
    }
    private set { }
}

Мой XAML:

<Button Label="DO" Command="{Binding commandSelector}"/>

1 Ответ

0 голосов
/ 24 мая 2018

можно изменить привязку свойства команды в триггере:

<Button Label="DO">    
    <Button.Style>        
        <Style TargetType="Button">            
            <Setter Property="Command" Value="{Binding command2}"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsChecked, ElementName=someCheckBox}" Value="True">
                    <Setter Property="Command" Value="{Binding command1}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>        
    </Button.Style>    
</Button>

, но, вероятно, лучше иметь одну команду и выполнять различные действия в зависимости от состояния проверки в обработчике команд:

ICommand commandSelector { get; set; }

private void commandSelectorExecute(object o)
{
    if (checkbox)
       DoSmth();
    else 
       DoSmthElse();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...