私は、XAMLで(WPF-MDI使用して)定義された3つのメニュー項目があります。コマンド
<MenuItem Header="_Generic" Name="Generic" ToolTip="Generic Visual Studio designer theme"
Command="{Binding Path=SelectGenericTheme}"/>
<MenuItem Header="_Luna" Name="Luna" ToolTip="Blue Windows XP theme"
Command="{Binding Path=SelectLunaTheme}"/>
<MenuItem Header="_Aero" Name="Aero" ToolTip="Windows Vista/7 theme"
Command="{Binding Path=SelectAeroTheme}"/>
とのViewModelのコマンドと現在の選択の定義:
public enum ESelectedTheme
{
Generic,
Luna,
Aero
}
ESelectedTheme _selectedTheme;
ICommand _selectGenericThemeCommand;
public ICommand SelectGenericThemeCommand
{
get { return _selectGenericThemeCommand ?? (_selectGenericThemeCommand = new RelayCommand(param => SelectGenericTheme(),
param => true)); }
}
void SelectGenericTheme()
{
_selectedTheme = ESelectedTheme.Generic;
}
ICommand _selectLunaThemeCommand;
public ICommand SelectLunaThemeCommand
{
get
{
return _selectLunaThemeCommand ?? (_selectLunaThemeCommand = new RelayCommand(param => SelectLunaTheme(),
param => true));
}
}
void SelectLunaTheme()
{
_selectedTheme = ESelectedTheme.Luna;
}
ICommand _selectAeroThemeCommand;
public ICommand SelectAeroThemeCommand
{
get
{
return _selectAeroThemeCommand ?? (_selectAeroThemeCommand = new RelayCommand(param => SelectAeroTheme(),
param => true));
}
}
void SelectAeroTheme()
{
_selectedTheme = ESelectedTheme.Aero;
}
を
私は2つの質問(1つのポストの内側に許可されている希望)持っている:私は私の値にXAMLでにisCheckedプロパティをバインドしたい
- を選択された(_選択されたテーマ)。私はコンバータを書く必要があると思うが、私はどのようにわからない。
- 私は3つのICommandsを作成しました(テーマごとに1つ)... 20テーマがあれば...このコードをパラメータ化する方法はありますか?
ありがとうございます。
['CommandParameter'](http://msdn.microsoft.com/en-us/library/system.windows.controls.menuitem.commandparameter.aspx)を指定することができます。コマンドのパラメータ化方法?あなたはいつも 'param => ...'を無視していますか? –
parameterizeとは、3つのコマンドの代わりに1つのコマンドだけを使用することを意味します(ただし、CommandParameterの動作方法を確認します)。コメントありがとう。 –
'RelayCommand(T)'では、述語として 'true'を渡すのは意味がありません。 –