2013-08-30 59 views
3

我在綁定TextBox的IsEnabled屬性時遇到問題。我在這個論壇上看到了一些基於下面的代碼應該工作的帖子(至少這是我的想法)。但是,當我運行應用程序時,IsNumberEnabled屬性的調用只執行一次 - 就在加載相應的視圖之前。 有人可以請給我一隻手在這裏。謝謝。TextBox.IsEnabled綁定只能工作一次。爲什麼?

XAML:

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

模型視圖:

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

回答

6

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 
     } 
    } 
} 
+0

這就是它。我沒有提出PropertyChanged事件,但在一個錯誤的屬性。而不是IsNumberEnabled我正在籌集數量的事件。謝謝。 – bdristan

相關問題