1

私のプログラムには、「保存」というボタンとtextBox. このウィンドウの ViewModel もあります。ViewModel 内には、のstringプロパティと、ボタンのプロパティがあります。内にテキストがある場合にのみボタンを有効にしたいと思います。textBoxboolIsEnabledtextBox

xaml:

<Button IsEnabled="{Binding SaveEnabled}" ... />
<TextBox Text="{Binding Name}" ... />

ビューモデルのプロパティ:

//Property for Name
public string Name
{
    get { return _name; }
    set
    {
        _name = value;
        NotifyPropertyChange(() => Name);

        if (value == null)
        {
            _saveEnabled = false;
            NotifyPropertyChange(() => SaveEnabled);
        }
        else
        {
            _saveEnabled = true;
            NotifyPropertyChange(() => SaveEnabled);
        }
    }
}

//Prop for Save Button -- IsEnabled
public bool SaveEnabled
{
    get { return _saveEnabled; }
    set
    {
        _saveEnabled = value;
        NotifyPropertyChange(() => SaveEnabled);
    }
}

ここでの主な質問は、この問題に関するコードをどこに置くかということだと思います。上記のようにsetterNameプロパティの に入れようとしましたが、成功しませんでした。

4

2 に答える 2

2

あなたはただ行うことができます:

public string Name
{
    get { return _name; }
    set
    {
        _name = value;
        NotifyPropertyChanged(() => Name);
        NotifyPropertyChanged(() => SaveEnabled);
    }
}

public bool SaveEnabled
{
    get { return !string.IsNullOrEmpty(_name); }
}

編集:これを xaml に追加します。

<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}">...</TextBox>
于 2013-11-07T20:36:40.377 に答える