我想知道是否有一種方法調用方法或更新WPF綁定到對象時ViewModel對象上的屬性?關於綁定WPF刷新模型
我想這樣做的原因是,當我的viewModel對象被創建時,他們的數據模型只包含一個ID,用於在必要時從數據庫查詢數據。因此,當用戶導航到該對象時,我希望視圖通知ViewModel對象它正在觀看,結果告訴數據模型從數據庫更新它的值並將我的ViewModel對象置於加載狀態
如果ViewModel對象知道在屏幕上顯示時自動更新它們,我可以避免手動刷新所有對象。
謝謝!
我想知道是否有一種方法調用方法或更新WPF綁定到對象時ViewModel對象上的屬性?關於綁定WPF刷新模型
我想這樣做的原因是,當我的viewModel對象被創建時,他們的數據模型只包含一個ID,用於在必要時從數據庫查詢數據。因此,當用戶導航到該對象時,我希望視圖通知ViewModel對象它正在觀看,結果告訴數據模型從數據庫更新它的值並將我的ViewModel對象置於加載狀態
如果ViewModel對象知道在屏幕上顯示時自動更新它們,我可以避免手動刷新所有對象。
謝謝!
當WPF綁定到ViewModel中的對象時,它將使用屬性getter來獲取該值。
這聽起來像你正在嘗試使用懶評價 - 只是使吸氣懶洋洋地從數據庫實例的信息:
private int entityId; // Set in advance
private Entity entityToFetch; // Will be fetched lazily
public Entity EntityToFetch
{
get
{
if (this.entityToFetch == null) // || this.entityToFetch.Id != this.entityId) - add this if you're letting this change at runtime...
{
this.entityToFetch = DataAccessLayer.FetchEntityForId(this.entityId);
}
return this.entityToFetch;
}
}
您可以將Selected屬性添加到您的ViewModel,該對象在選定對象時會被設置。當選擇變爲true時,您可以點擊數據庫。
我想我應該更清楚。 儘管如果我有一個對象時,它可以工作,但我的對象引用了引用其他數據的其他對象等。 因此,我可以手動遍歷所有對象並調用刷新,看起來有點痛苦。 任何其他提示? – HaxElit 2009-10-22 20:26:29
在這種情況下,我沒有任何真正聰明的想法,對不起:( – 2009-10-22 20:48:16
這似乎是一個很好的方法 - 你可以將對象的getter連接到(懶惰地)實例化,因爲每個實例第一次被擊中。 。 – andyp 2009-10-22 21:07:18
我會給它一個看看它是如何工作的。唯一令我感到害怕的是當你正在調試它時,當你在代碼中逐步加載時會自動加載對象,所以它很難知道什麼是加載的when。 – HaxElit 2009-10-22 21:38:27
儘管過去我曾多次使用過這種方法,但我不得不承認,我不喜歡模型知道底層存儲提供程序類。不幸的是,我還沒有想出一個乾淨而可接受的解決方案。 – Ash 2009-10-23 07:36:06