[オンラインテンプレート]->[VS2010のWPF]->[WPFMVVMプロジェクトテンプレート]を使用して、新しいWPFMVVMアプリケーションを作成しました。「更新を有効にしますか?」というラベルの付いたチェックボックスを作成しました。クリックしたときに「更新」ボタンを有効/無効にしたい「更新」ボタンの横。IsChecked
チェックボックスのaMainWindowViewModel
プロパティを呼び出したプロパティにバインドすると、セッターCanRefreshDate
で発生します。RaisePropertyChanged(()=>CanRefreshDate);
また、にMainWindowViewModel
、新しく作成CanExecuteRefreshDate()
したプロパティを追加しました。これは、プロパティのブール値を返しCanRefreshDate
ます。ただし、チェックボックスをクリックすると、[更新]ボタンが有効/無効になりません。これを修正する適切な方法は何ですか?これはテンプレートの見落としですか、それとも何ですか?
テンプレートコードに対する私の変更は次のとおりです。
Xaml:
<CheckBox Content="Refresh Enabled?"
IsChecked="{Binding CanRefreshDate}"/>
MainWindowViewModel.cs:
private bool _CanRefreshDate;
public bool CanRefreshDate
{
get { return _CanRefreshDate; }
set
{
if (_CanRefreshDate != value)
{
_CanRefreshDate = value;
RaisePropertyChanged(() => CanRefreshDate);
}
}
}
public ICommand RefreshDateCommand { get { return new DelegateCommand(OnRefreshDate, CanExecuteRefreshDate); } }
private bool CanExecuteRefreshDate()
{
return CanRefreshDate;
}
RaiseCanExecuteChanged()
テンプレートのスペルRasieCanExecuteChanged()
がDelegateCommand.csで間違っていることに気づき、それを変更しました。RaiseCanExecuteChanged()
を削除して変更することで、すべてを機能させることができました
public event Handler CanExecuteChanged;
に :
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
ただし、これに対する適切な解決策と、テンプレートが機能しない理由を知りたいと思います。私は何かが足りないのですか、何か間違ったことをしているのですか、それとも何ですか?新しいソリューションを作成し、私が作成したテンプレートを使用して、何が起こっているのか教えてください!ありがとう!