我在连接到视图的演示者中有一个对象。在我的XAMTL我有以下几点:更新对象后刷新wpf数据绑定
<Label Content="{Binding ElementName=PSV, Path=Presenter.Portfolio.Name}"/>
现在,当创建控制,投资组合为空,然后我运行这台组合的另一种方法。我已经实现了INotifyPropertyChanged,但到目前为止,我还没有能够触发连接到绑定。
有人可以给我提示吗?我可以绑定到属性的属性吗?
我在连接到视图的演示者中有一个对象。在我的XAMTL我有以下几点:更新对象后刷新wpf数据绑定
<Label Content="{Binding ElementName=PSV, Path=Presenter.Portfolio.Name}"/>
现在,当创建控制,投资组合为空,然后我运行这台组合的另一种方法。我已经实现了INotifyPropertyChanged,但到目前为止,我还没有能够触发连接到绑定。
有人可以给我提示吗?我可以绑定到属性的属性吗?
绑定始终与DataContext一起使用,您需要将Presenter设置到本地DataContext中。例如,你可以在你的窗口或用户控件的构造函数中做到这一点:
this.DataContext = new Presenter();
你的绑定,然后将改变为:
<Label Content="{Binding ElementName=PSV, Path=Portfolio.Name}"/>
你的前路的演示部分是DataContext的暗示。
这样DataContext正在监视NotifyChanged事件,并且会在投资组合从null更改为具有值时正确更新视图。
在回答问题的最后部分时,绑定到属性属性确实有效。
如果您正确实施INotifyPropertyChanged
,这会工作得很好。有些事情可以尝试:
INotifyPropertyChanged
,并在设置Name
时提高事件。如果没有这些,请发布您的代码。
由于您已经实现了INotifyPropertyChanged,您是否确保在您的Portfolio.Name设置器中触发PropertyChanged事件?
string _name;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
// Alert the databinding engine about changes to the source value
OnPropertyChanged("Name");
}
void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(propertyName);
}
#region INotifyPropertyChanged members
public event PropertyChangedEventHandler PropertyChanged;
#endregion