我需要一些关于WPF和数据绑定的帮助。
假设我有一个ClassA成员的ClassA。 ClassB再次成为会员, 也许是一个int:
ClassB
{
public int MemberOfB { get; set; }
}
ClassA
{
private ClassB _theB;
public ClassB MemberOfA
{
get {return _theB;}
set
{
_theB = value;
// Need to do something here...
}
}
}
当我在XAML中使用这样的数据绑定时:
<TextBox Text="{Binding Path=MemberOfA.MemberOfB}"/>
Textbox的Datacontext是ClassA类型的对象。
如您所见,我需要在ClassA中的MemberOfA的setter中进行一些计算。 但是通过上面的数据绑定,这个setter当然不会被调用,因为它会绑定 给ClassB的成员。
那么,如果MemberOfA发生变化(当我在文本框中输入内容时),如何通知我?有没有最佳做法? (没有检查Visual Studio中的代码,因此可能存在一些语法错误。)
谢谢,沃尔特
答案 0 :(得分:2)
处理此问题的最佳方法可能是让B实现INotifyPropertyChanged。当A获得B的新实例时,请将其连接到PropertyChanged事件(并在必要时从旧B的事件中取消挂钩)。
public B MemberOfA {
get { return _b; }
set {
if (_b != null) { _b.PropertyChanged -= B_PropertyChanged; }
_b = value;
if (_b != null) { _b.PropertyChanged += B_PropertyChanged; }
DoWhatever(_b);
}
}
private void B_PropertyChanged(object sender, PropertyChangedEventArgs e) {
DoWhatever((B)sender);
}
答案 1 :(得分:0)