2012-07-09 45 views
9

在Silverlight 5應用MVVM-Light Toolkit,我試圖找到一種方式來傳遞Command ParametersEventArgs既視圖模型在事件到命令的行爲。MVVM光強=>傳遞命令參數的EventArgs到命令

我確實找到了一個建議,將EventArgs作爲命令參數傳遞,但在我的情況下,我想在ViewModel中都使用EventArgsCommand Parameter

任何人都可以幫忙嗎?

+0

這甚至可以使用MVVM-Light工具包嗎? – Thr3e 2012-07-10 01:25:18

+0

我會創建一個輕量級對象,其中包含我需要的事件參數和通常要作爲命令參數發送的對象的信息,並將該輕量級對象用作我的命令參數。 – 2012-07-11 00:02:57

+0

@StewartSweet對不起,但你怎麼能創建這樣一個對象?你能舉一個例子嗎? – Thr3e 2012-07-12 00:58:02

回答

11

解決問題....的情況下,如果其他人想知道......

理念:我們只需要通過MVVM光強事件的EventArgs傳遞給命令。在命令事件中,有一個屬性來源。我們可以將此「源」屬性轉換爲生成此命令的對象。

例子:

我們在視圖模型構造

FilterQuotationsCommand = new RelayCommand<GridViewFilteredEventArgs>(FilterQuotationsCommandExecute); 

宣佈與EventArgs的命令,我們就鑄到發送控制訪問之後通過「源」的發件人。

private void FilterQuotationsCommandExecute(GridViewFilteredEventArgs e) 
    { 
     var grid = (RadGridView) e.Source; // we casted the Source to Grid 
     var item = grid.SelectedItem;  // we can access grid's selected items 
    }