在MVVM模式中单击更改按钮颜色

时间:2013-10-09 01:31:02

标签: c# wpf xaml mvvm icommand

推送ICommand后,我有一个Button。发生这种情况时,我需要更改此Button的背景颜色。如何使用MVVM模式执行此操作?

private DelegateCommand asioMuted;

public ICommand AsioMuted
{
    get
    {
        if (asioMuted == null)
        {
            asioMuted = new DelegateCommand(MuteAsio);
        }

        return asioMuted;
    }
}

XAML:

<Button Content="Mute" 
        Command="{Binding AsioMuted}"
        HorizontalAlignment="Left" 
        Margin="29,282,0,0"  
        VerticalAlignment="Top" 
        Width="42" 
        RenderTransformOrigin="-0.273,1.818" />

2 个答案:

答案 0 :(得分:4)

将按钮的背景颜色绑定到ViewModel上的画笔属性。然后,让ICommand更改视图模型上画笔的颜色。有些人可能还建议将颜色绑定到ViewModel上的IsMuted属性,然后使用转换器将true / false转换为画笔。此方法从ViewModel中删除任何UI特定的详细信息。

答案 1 :(得分:0)

@Quanta代码隐藏可能包含实现视觉行为的UI逻辑代码,因此更改viewModel上画笔的颜色是针对mvvm模式的。

  

视图定义和处理UI视觉行为,例如动画或   可能由视图中的状态更改触发的转换   模型或通过用户与UI的交互。   支持我的话:http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx