2

私がやりたいことはかなり単純ですが、それを行う方法に関してオンラインで例を見たことがありません。フィールドが変更された場合に「更新」ボタンを有効にしたい。

コンテキスト: データベース内の行を更新する WPF フォームがあります。フォームの値を変更しない限り、ユーザーが [更新] ボタンをクリックできないようにしたいと考えています。私は MVVM パターンを使用しており、更新可能な 4 つのプロパティ (名前、住所、電話、電子メール) があります。ユーザーがこれらのプロパティのいずれかを変更しない限り、[更新] ボタンを有効にしたくありません。

ありがとう!

コマンド コード (CanExecute にどのような種類の検証を入れればよいかわかりません)

    public ICommand UpdateCommand
    {
        get;
        internal set;
    }

    private void CreateUpdateCommand()
    {
        UpdateCommand = new RelayCommand(UpdateExecute, CanExecuteUpdateCommand);
    }

    private void UpdateExecute(object obj)
    {
        ClientModel.UpdateClient(_selectedClient);
    }

    private bool CanExecuteUpdateCommand(object obj)
    {
        return true;
    }
4

1 に答える 1

0

こんにちは、最初は false であるhasChangesのような bool フラグを設定できます。変更可能なプロパティのセッターで true に設定し、更新後に再度 false に設定します。CanExecute では、true ではなく hasChanges を返します。プロパティ Name があるとします

private bool hasChanges=false;
    private string name;

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
            hasChanges = true;
            Notify("Name");
        }
    }

    private bool CanExecuteUpdateCommand(object obj)
    {
        return hasChanges;
    }
 private void UpdateExecute(object obj)
{
    ClientModel.UpdateClient(_selectedClient);
    hasChanges=false;
}

アイデアが得られたことを願っています。

于 2013-07-27T00:55:08.160 に答える