2012-09-06 28 views
0

好吧,我正在構建一個應用程序,該應用程序搜索數據庫以查詢給定的查詢,並在之後下載其結果,以將其顯示在主頁的列表框中。使用MVVM搜索

每個結果都有更多的細節可供參考,所以我決定使用的第一件事是某種細節頁面。但我不知道該如何實現這個過程:

  • 上的MainPage,填寫文本框,然後按按鈕搜索
  • 不知去到MainViewModel與的MainPage的文本框的值調用LoadData()方法

回答

1

請記住,MVVM是:模型,視圖&視圖模型。

因此,您在主頁面(視圖)上搜索觸發該頁面視圖模型中的代碼。然後你在新的視圖中顯示細節,所以真的你應該考慮的是:

  1. 如何將參數從一個視圖模型傳遞到另一個視圖模型。這取決於你的MVVM框架,所以不能給你具體的細節,因爲你沒有說明什麼框架。
  2. 然後使用參數在模型中使用搜索(在您的問題中忽略它)。

我和我的MVVM系統做的是做一個標準的網頁瀏覽和參數傳遞到新的頁面,然後我抓住,在OnNavigated方法和分析出來,並把它傳遞給視圖模型,然後過濾具有該值的模型中的數據。

+0

什麼是視圖模型意味着什麼? XAML? – Clue

+0

@線索在開始你的應用程序之前,你可能會更好地閱讀關於MVVM的內容。如果你不明白至少有1/3是什麼,你怎麼能遵循一個模式? – Thelonias

+0

@Clue您的視圖是XAML,綁定到它的代碼是ViewModel(VM)。虛擬機通常會與模型進行對話,模型是處理與數據庫交談的單獨代碼......這個想法是模型是數據結構,但通常數據結構並不適合您要顯示的內容,因此您有理解模型的中間層,並將這些數據放入一個結構中,該結構是視圖的最佳表示。它聽起來像你只有一個模型和你的代碼視圖,這就是爲什麼這很難爲你解決。 –

2

視圖模型

public class SearchViewModel { 
     public ICommand SearchCommand {get;set;} 
     public string SearchCriteria {get;set;} 
    } 

鑑於代碼隱藏

View.DataContext = viewModel 

查看XAML:

<Button Command="{Binding SearchCommand}"/> 
    <TextBox Text="{Binding SearchCriteria}"/> 

當命令是由搜索條件調用濾波器數據通知視圖。

這裏是MVVM圖案的描述:http://en.wikipedia.org/wiki/Model_View_ViewModel

+0

我並不完全明白你的意思 – Clue

+0

MVVM是模型視圖和視圖模型,模型是你的數據,視圖是UI,ViewModel是一個視圖綁定到的類 – syned

+0

是的,但你認爲View是什麼「視圖」。 DataContext的? – Clue