我在連接到視圖的演示者中有一個對象。在我的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