MVVM:在运行时更改按钮内容和命令绑定

MVVM: Change button content and command binding at runtime

我有一个按钮应该用作连接或断开按钮,具体取决于 ViewModel 的已连接-属性:

<Button Content="_Connect" x:Name="connectButton" Command="{Binding ConnectCommand}"/>

现在,根据 属性,内容应该是“_Connect”或“_Disconnect”,命令绑定应该转到 ConnectCommand 或 DisconnectCommand。

有什么好的方法可以做到这一点,还是我应该对两者都使用一个命令并让 DataTrigger 根据已连接 属性 分别设置内容?

非常感谢!

使用相同的命令,您可以使用枚举处理此问题。

   <Button Name="btnOption"
        Grid.Row="0"
        Grid.RowSpan="3"
        Grid.Column="8"
        Command="{Binding RxOptionCommand}"
        Content="{Binding RxOptionContent}" />

根据您的视图模型的连接或断开业务更改按钮内容,同时将您的枚举值设置为变量。

 public enum EnumRxRecStatus
    {
        None = 0,
        New = 1,
    }

现在您可以将条件检查到您的命令事件中

public void OnRxOptionCommand(object sender)
        {
             if (RequestForRxOption == EnumRxRecStatus.None) 
                {
                     // Do something
                }

            else if (RequestForRxOption == EnumRxRecStatus.New) 
                {
                   // Do something
                }           
        }

确实很简单:

正如 Clemens 所建议的,我最终使用 DataTrigger 设置了绑定和内容。