2010-03-20 72 views
1

構建我的第一個SL MVVM應用程序(Silverlight4 RC),並有一些我不明白的問題。Silverlight MVVM綁定似乎不工作

有一個WPF背景我不知道是怎麼回事:

視圖模型有幾個特性,其中一個被稱爲SelectedRecord。這是一個只得到財產的定義是這樣的:

public Culture SelectedRecord { 
get { return culturesView.View.CurrentItem as Culture; } } 

正如你可以看到它是得到一個CollectionViewSource(稱爲culturesView)的當前值。所以,如果我選擇一種文化,SelectedRecord(直接從CollectionViewSource中獲取值)如預期的那樣。 (實際上有一個數據網格控件綁定到CollectionViewSource,因此可以更改所選項目)

好的。現在到視圖。有幾個視圖可以訪問這個ViewModel,特別是有一個顯示前面提到的屬性SelectedRecord的值(我們稱之爲EditView)。爲了顯示這個EditView,有一個按鈕(它的Command屬性綁定到ViewModel中的一個ICommand),它按預期的方式運行(第一次)。

這意味着:

第一嘗試:我選擇一個記錄中,切換到EditView中,結果:選定記錄值顯示(如預期!!)。

第二次嘗試:切換回數據網格,選擇另一條記錄,切換到EditView,結果:之前顯示的記錄的值再次顯示!爲什麼??

首先,我認爲SelectedRecord沒有設置正確的值,但我錯了:它有正確的值!所以它應該顯示!?

我在想什麼?在WPF中這將工作!

在此先感謝

+0

至少有4種不同的框架可以幫助提供MVVM模式,您使用哪一種? – AnthonyWJones 2010-03-21 09:18:28

+0

我沒有使用任何預製的。每當需求出現時,我都沒有遇到過,我正在閱讀博客,以瞭解如何操作! – 2010-03-21 10:10:02

回答

1

當CURRENTITEM值的變化,您的視圖模型具有SelectedRecord必須調用RaisePropertyChanged(「SelectedRecord」),所以無論怎樣的看法是綁定到被通知的變化。

+0

你是對的!我意識到這一點後,我打開線程!非常感謝! – 2010-03-21 10:11:08