3

が押され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 プロパティに色をバインドし、コンバーターを使用して true/false をブラシに変換することを提案する人もいます。このアプローチは、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 に答える