3

[オンラインテンプレート]->[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; }
}

ただし、これに対する適切な解決策と、テンプレートが機能しない理由を知りたいと思います。私は何かが足りないのですか、何か間違ったことをしているのですか、それとも何ですか?新しいソリューションを作成し、私が作成したテンプレートを使用して、何が起こっているのか教えてください!ありがとう!

4

1 に答える 1

0

作者はこの問題を修正し、昨日テンプレートのバージョン4.1をリリースしました。

于 2013-03-01T13:28:50.243 に答える