将Button.IsEnabled绑定到TextBox的数据源中的属性

时间:2011-10-10 20:28:12

标签: wpf xaml data-binding binding

我有一个Foo课程:

public class Foo
{
    public string Value { get; set; }
    public string IsDirty { get; private set; }
}

我的xaml与TextBoxButton绑定到Foo

<TextBox Text="{Binding Value, UpdateSourceTrigger=PropertyChanged}" ... />
<Button IsEnabled="{Binding IsDirty}" ... />

TextBox中的文字更改后(KeyDown更新),Foo.IsDirty变为真(直到点击保存按钮)。

现在,Button.IsEnabledFoo.IsDirty更改时不会发生变化。

我如何更改Button上的绑定,以便在Foo.IsDirty = true后立即启用,反之亦然?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要在Foo类中实现接口INotifyPropertyChanged:

public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
  {
      PropertyChangedEventHandler handler = PropertyChanged;
      if (handler != null)
      {
          handler(this, new PropertyChangedEventArgs(name));
      }
  }


private bool _isDirty;

public bool IsDirty { get{ return _isDirty;}
                      private set{
                          _isDirty= value;
                          OnPropertyChanged("IsDirty"); }
                    }