如何识别在WPF中使用MVVM模式单击了哪个按钮?

时间:2017-07-15 05:31:21

标签: wpf

我正在使用MVVM模式。我有两个按钮。点击我需要确定点击了哪个按钮。我如何绑定XAMl中的按钮,以便我可以识别单击了哪个按钮。

2 个答案:

答案 0 :(得分:1)

如果您确实使用MVVM,请将每个按钮的Command绑定到视图模型中的相应ICommand。它将是两个不同的命令,因此您不需要执行任何特殊操作来区分一个按钮与另一个按钮。

XAML:

<Button Content="FirstButton"
        Command="{Binding Path=FirstCommand, Mode=OneTime}"/>
<Button Content="SecondButton"
        Command="{Binding Path=SecondCommand, Mode=OneTime}"/>

查看 - 型号:

public sealed class ViewModel : INotifyPropertyChanged
{
    // ...
    public ICommand FirstCommand { get; }
    public ICommand SecondCommand { get; }
    // ...
}

答案 1 :(得分:1)

如果您想对多个按钮使用相同的Command,则可以使用CommandParameter

<Button Content="buttonContent1" Command="{Binding ButtonClickCommand}"                    
                        CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}"/>

在命令委托方法中,您可以使用以下内容:

private void ButtonClickCommandHandler(object parameter)
{
    switch(parameter.ToString())
    {
        case buttonContent1:
        ...
        case buttonContent2:
        ...
    }

}

此处按钮由其内容标识,当然您可以将其更改为其他属性,例如Tag