3

当 a被按下时,我有一个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" />
4

2 回答 2

4

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

于 2013-10-09T01:35:03.917 回答
0

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

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

于 2013-10-09T11:37:36.140 回答