2013-05-22 48 views
0

我正在設計一個WPF應用程序並使用MVVM模式。假設我有一個視圖叫做View1,它的DataContext在它的承包商中設置爲ViewModel1。虛擬機有一個Command,稱爲RefreshCommand,其作用是計算要顯示在視圖上的數據。現在我想在我的觀點顯示後立即致電RefreshCommand,但我不知道該怎麼做。WPF:視圖呈現後MVVM中的調用命令?

我試圖把它調用的代碼隱藏在那裏我處理Loaded事件的用戶控件,這樣的事情:

Private Sub AfterLoad(sender As Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded 
    RefreshButton.Command.Execute(sender) 
End Sub 

然而,這時候我注意到,在這一刻RefreshButton.Command仍設置作爲Nothing。請注意,在UI交互中,此按鈕/命令的調用很好。那麼我應該何時調用命令來執行這樣的操作?謝謝!

+0

看起來應該起作用。顯示你的XAML和viewmodel?這聽起來像是半奇怪的請求。我想通常我會讓我的虛擬機立即獲取它的數據,並通過綁定顯示數據在視圖中。您確定要讓視圖啓動數據加載嗎? – Alan

+0

@Alan謝謝你的回覆。當然,它的工作原理!現在我只是在VM的承包商的最後一行調用命令的exec函數。它正在工作。此用戶控件實際上包含一個AX Windows窗體控件(來自OWC的數據透視表),因此虛擬機和視圖以某種方式相互混淆:虛擬機必須知道視圖中的數據透視表成員。這就是爲什麼我感到困惑。但無論如何,它現在正在工作。謝謝! – tete

+0

很高興你能工作,我將你的評論作爲答案轉貼,因爲你的工作。 – Alan

回答

2

這看起來應該起作用。顯示你的XAML和viewmodel?

通常我會讓我的虛擬機立即獲取其數據,並通過綁定在視圖中顯示數據。嘗試在虛擬機構造函數中執行刷新命令