3

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

xml:

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

模型视图:

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

1 回答 1

8

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

当您更改影响您的值时...condition...,您需要将PropertyChangedwith"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
        }
    }
}
于 2013-08-30T18:13:56.110 回答