XAML で 3 つのメニュー項目を定義しました (WPF-MDI を使用):
<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 プロパティを、選択されている値 (_selectedTheme) にバインドしたいと考えています。コンバーターを作成する必要があると思いますが、方法がわかりません。
- ICommands の 3 つのコピー (テーマごとに 1 つ) を作成しました... 20 個のテーマがある場合はどうなりますか? このコードをパラメーター化する方法はありますか?
前もって感謝します。