2009-10-22 64 views
0

我想知道是否有一種方法調用方法或更新WPF綁定到對象時ViewModel對象上的屬性?關於綁定WPF刷新模型

我想這樣做的原因是,當我的viewModel對象被創建時,他們的數據模型只包含一個ID,用於在必要時從數據庫查詢數據。因此,當用戶導航到該對象時,我希望視圖通知ViewModel對象它正在觀看,結果告訴數據模型從數據庫更新它的值並將我的ViewModel對象置於加載狀態

如果ViewModel對象知道在屏幕上顯示時自動更新它們,我可以避免手動刷新所有對象。

謝謝!

回答

2

當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; 
    } 
} 
+0

這似乎是一個很好的方法 - 你可以將對象的getter連接到(懶惰地)實例化,因爲每個實例第一次被擊中。 。 – andyp 2009-10-22 21:07:18

+0

我會給它一個看看它是如何工作的。唯一令我感到害怕的是當你正在調試它時,當你在代碼中逐步加載時會自動加載對象,所以它很難知道什麼是加載的when。 – HaxElit 2009-10-22 21:38:27

+0

儘管過去我曾多次使用過這種方法,但我不得不承認,我不喜歡模型知道底層存儲提供程序類。不幸的是,我還沒有想出一個乾淨而可接受的解決方案。 – Ash 2009-10-23 07:36:06

0

您可以將Selected屬性添加到您的ViewModel,該對象在選定對象時會被設置。當選擇變爲true時,您可以點擊數據庫。

+0

我想我應該更清楚。 儘管如果我有一個對象時,它可以工作,但我的對象引用了引用其他數據的其他對象等。 因此,我可以手動遍歷所有對象並調用刷新,看起來有點痛苦。 任何其他提示? – HaxElit 2009-10-22 20:26:29

+0

在這種情況下,我沒有任何真正聰明的想法,對不起:( – 2009-10-22 20:48:16