2013-01-14 22 views
0

在我的XAML代碼,我已經綁定到當前的DataItem像這樣(路徑=。):如何調用的PropertyChanged如果我有一個綁定到當前的DataItem

Background="{Binding Path=., Converter={StaticResource ResourceKey=kBackground}}" 

我的轉換器使用的幾個屬性的數據項來確定背景。當任何這些屬性改變時,背景顏色可能會改變。我想向目標發送通知,以便背景適當地改變。我的問題是,當綁定路徑是「。」時,我不知道如何發送這樣的通知。

如果我的轉換器採用PropertyA和PropertyB,美其名曰:

PropertyChanged(this, new PropertyChangedEventArgs("PropertyA")) 

和/或

PropertyChanged(this, new PropertyChangedEventArgs("PropertyB")) 

不會觸發綁定。我試着打電話給:

PropertyChanged(this, new PropertyChangedEventArgs(".")) 

但它並沒有觸發綁定。

如何調用的PropertyChanged以這樣的方式,我的「路徑=」。綁定獲取他們需要更新的通知?

這可能是一個重複的問題,但我找不到一個。我不太瞭解這個術語。

+0

與你結合你綁定到你所定義的結合正確的實例?如果是這樣,你的轉換器不會被調用,因爲實例本身沒有改變。只有它的屬性.. – rhe1980

+1

如果你的轉換器只改變了顏色我認爲,更好的辦法是增添風格DataTriggers – chameleon86

+0

我@ hameleon86同意轉換器會更好,但只有當你正在測試,如果PropertyA或PropertyB等於什麼的,如'如果A = X或B = Y返回紅色'。如果您正在測試其它的邏輯,如'如果A> X或B < Y or A > b返回Red',那麼你就需要一個轉換器。 – Rachel

回答

1

嘗試使用IMultiValueConverter代替,並通過它所需要

<Grid.Background> 
    <MultiBinding Converter="{StaticResource MyMultiValueConverter}"> 
     <Binding Path="PropertyA"/> 
     <Binding Path="PropertyB"/> 
    </MultiBinding> 
</Grid.Background> 

中的屬性,應該得到重新評估隨時隨地一個PropertyChange通知提出,使用您的任何PropertyAPropertyB

替代當前綁定語法將隨時提高你的父數據項的PropertyChange通知PropertyAPropertyB變化。

例如,假設您目前的數據項是SomeObject

SomeObject.PropertyChanged += SomeObject_PropertyChanged; 

... 

void SomeObject_PropertyChanged(object src, PropertyChangedEventArgs e) 
{ 
    if (e.PropertyName == "PropertyA" || e.PropertyName == "PropertyB") 
    { 
     RaisePropertyChanged("SomeObject"); 
    } 
} 
+0

我忘記了MultiBindings。這對我有用。謝謝! – user1214135

相關問題