我綁定到WPF應用程序中XAML的屬性,但是此查詢是關於在另一個類/對象中引發另一個類屬性時引發一個類屬性的'PropertyChanged'事件。一個用例是組合框的ItemsSource綁定到一個屬性(在我下面的簡化示例中爲PropB),並且該屬性返回基於其他屬性(下面的PropA)的集合。 B類中的PropB需要在A類中的PropA發生更改時提升PropertyChanged,但A類不會引用B類。將一個屬性綁定到另一個並鏈/火OnPropertyChanged
是否存在現有的方法或框架,以便具有INotifyPropertyChanged對象的屬性時可以引發'OnPropertyChanged'屬性在另一個對象的變化?
下面是想什麼,我用一個虛構的做榜樣「通知」財產屬性作爲綁定路徑:
public class A : NotifyPropertyChanged
{
string m_PropA;
public string PropA
{
get { return m_PropA; }
set
{
if (m_PropA != value)
{
m_PropA = value;
OnPropertyChanged("PropA");
}
}
}
}
public class B : NotifyPropertyChanged
{
public A ARef { get; private set; }
string m_PropB;
[Notify("ARef.PropA")]
public string PropB
{
get { return ARef.PropA; }
}
}
理想的屬性將創建一個綁定到每個屬性屬性路徑(ARef和PropA),當它們中的任何一個改變時,都會調用類B中的OnPropertyChanged作爲propertyName參數傳遞「PropB」。我假設ARef屬性在更改時也需要引發一個事件,但如果沒有,它會很好。
我猜這將需要一些反射和弱事件監聽。希望有一些我可以使用的東西。如果之前已經回答過,請道歉。
如果有什麼像「ViewModelA」和「ViewModelB」,你可以使用'Mediator'模式的好方法發送消息從一個到另一個。有關該主題的一些文章,如下所示:http://marlongrech.wordpress.com/2009/04/16/mediator-v2-for-mvvm-wpf-and-silverlight-applications/ –
謝謝。我的時間有點短,所以在再讀一遍之前我會問一下 - 當B引用A時,是否需要A向B發送消息?在我上面的例子中,A可以在由包含B的不同程序集引用的程序集中,因此A不能將消息發送給B(即它不知道B)。希望這個問題是有道理的。 – AndrewS
調解器是關於發送消息的對象「可能關注的對象」,通信對象不需要互相「認識」,不需要從「A」到「B」的引用,反之亦然 –