0

ビュー上のデータが変更され、それに応じて [保存] ボタンが有効になっているかどうかを確認するエレガントな方法を提案していただけますか?

ありがとう。

4

1 に答える 1

0

Caliburn.micro で MVVM を使用していると仮定すると、コマンドには Can 規則があります。したがって、Username という名前の文字列プロパティが空でない場合に [保存] ボタンを有効にすると仮定すると、このメソッドをビューモデルに追加するだけです。

public bool CanSave()
{
    if(String.IsNullOrEmpty(UserName))
        return false;

    return true;
}

クラスが PropertyChangedBase または Screen を継承し、Name="Save" のボタンがあると仮定すると、UserName が空の場合は無効になります。ビュー内のデータの変更に関心がある場合、関連するプロパティ (この例では UserName) はもちろん、ビュー内の入力領域にバインドする必要があります。たとえば、Caliburn をセットアップする UserName という名前の TextBox を持つことができます。慣例によるバインディング。

クラス全体は次のようになります。

実際に異なるデータのみ保存できるように編集

public class UserViewModel : PropertyChangedBase
{
    private string _savedUserName;

    public string UserName{ get; set; }

    public bool CanSave()
    {
        return !UserName.Equals(_savedUserName);
    }

    public void Save()
    {
        //Save the data

        _savedUserName = UserName;
    }
}
于 2012-08-27T17:06:31.720 に答える