2012-07-09 44 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 
    }