2
我有一個自定義的WPF usercontrol有一個依賴屬性(片段下面)。這不正確地觸發它的PropertyChangedCallback。WPF數據綁定與分隔的路徑,而不是更新目標
CustomControl:
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register(
"Value", typeof(float?), typeof(CustomControl),
new UIPropertyMetadata(new PropertyChangedCallback(OnDependencyPropertyChanged)));
public float? Value
{
get { return (float?)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
private static void OnDependencyPropertyChanged(object sender, DependencyPropertyChangedEventArgs e)
{
// Do something
}
當我綁定屬性用一個簡單的路徑,一切都很好。但是,當我使用分隔的路徑語法時,依賴項屬性不會在應該更新時更新。
工作結合:
<namespace:CustomControl Value={Binding ViewModelProperty}/>
不工作結合:
<namespace:CustomControl Value={Binding ViewModelProperty.ObjectProperty}/>
與工作語法中,OnDependencyPropertyChanged事件處理程序被調用響應由視圖模型解僱ViewModelProperty的PropertyChanged事件。但是,對於第二種語法,僅調用OnDependencyPropertyChanged事件處理程序以更改ObjectProperty,並且不會調用ViewModelProperty的更改。我是否需要執行任何其他設置以使分隔的(。)路徑語法適當地工作? (具有與TextBox.Text屬性默認相同的行爲)
您確定在第二種情況下爲ViewModelProperty觸發了PropertyChanged事件嗎?新的'ViewModelProperty'可能包含與舊的'ObjectProperty'值相同的值嗎?在這種情況下,綁定不會被更新。 – Clemens 2013-02-11 14:24:22
在第二種情況下,肯定是爲ViewModelProperty觸發了PropertyChanged事件。前後ObjectProperty值具有相同的「浮點數」也是事實。價值,但我仍然期待回調的發生(相當於TextBox.Text的可觀察性)。正如你在下面陳述的那樣「只要ViewModelProperty有更改通知,綁定就會被更新」。 – Phil 2013-02-11 14:50:09
當ObjectProperty包含相同的float值時,你會如何觀察TextBox.Text被更新?最後,PropertyChangedCallback不會被簡單地調用,因爲屬性值沒有改變。 – Clemens 2013-02-11 14:56:27