TextBox.IsEnabled绑定只能工作一次。为什么?

时间:2013-08-30 18:11:22

标签: wpf wpf-controls

我遇到了绑定TextBox的IsEnabled属性的问题。我在这个论坛上看过一些帖子,根据这些帖子,下面的代码应该起作用(至少这是我的想法)。但是,当我运行应用程序时,IsNumberEnabled属性上的调用只执行一次 - 就在加载相应的视图之前。 有人可以帮我一把。感谢。

XAML:

<Textbox Text="{Binding Path=Number, Mode=TwoWay}" IsEnabled="{Binding Path=IsNumberEnabled}" ... />

模型视图:

public bool IsNumberEnabled
{
    get { return ... condition ....; }  }

1 个答案:

答案 0 :(得分:7)

您的ModelView课程需要正确实施INotifyPropertyChanged

当您更改影响...condition...的值时,您需要使用PropertyChanged作为属性名称引发"IsNumberEnabled"。这将导致WPF再次获取并检查该值。

这通常意味着您将拥有需要多次级联和提升PropertyChanged事件的其他属性。例如,如果IsNumberEnabled依赖于另一个名为Foo的属性,那么Foo的属性定义将如下所示:

public double Foo
{
    get { return foo; }
    set
    {
        if (foo != value)
        {
            foo = value;
            RaisePropertyChanged();  // Raise PropertyChanged event for "Foo"
            RaisePropertyChanged("IsNumberEnabled"); // Tell WPF to check this property too
        }
    }
}