簡體   English   中英

WPF綁定到實體框架不更新

[英]WPF binding to entity framework not updating

我有一些綁定綁定到實體框架定義的對象。 我的一些綁定更新正常,而其他綁定則沒有。 解釋的最好方法是通過一個例子,我有這樣的事情:

<TextBlock Text="{Binding Path=FirstName}"/>
<TextBlock Text="{Binding Path=LastName}"/>
<TextBlock Text="{Binding Path=Role.Name}"/>

在這種情況下,只要對象的屬性發生更改,前兩個文本塊中的文本就會更新。 在最后一個的情況下沒有任何事情發生。 我明白為什么會這樣。 實體框架有一個屬性RoleID,它正在更新,它正在為RoleID提升屬性更改事件,但是它不會為Role引發這樣的事件。 所以綁定並不知道有什么變化。 我可以看到的可能解決方案是讓實體框架在RoleID更改時為Role引發屬性更改事件,或者讓綁定在RoleID而不是Role中查找更改。 我不知道怎么做其中任何一個。

提前感謝任何回復,邁克爾

我找到了解決方案。 正如Jerry所說,實體對象需要提出一個屬性改變事件。 問題是實體框架只為RoleID而不是Role提出事件。 我試圖通過調用ReportPropertyChanged來提升我自己的事件,但這是一個錯誤,說該屬性不存在。 解決方案是調用OnPropertyChanged(“Role”)而不是ReportPropertyChanged。 這可以在部分方法中完成,以便在更改RoleID時,還會為角色引發事件。 像這樣的東西

partial void OnRoleIDChanged()
{
    OnPropertyChanged("Role");
}

你應該知道的兩件事:

  1. 如果您的類屬性未實現INotifyPropertyChanged,則對基礎數據的更改將不會反映在UI中。

  2. 如果未將UpdateSourceTrigger = PropertyChanged添加到綁定中,則對UI的更改將不會反映在基礎數據中(直到您離開該字段)。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM