如何使用MVVM规则处理CommandBinding的执行事件?

时间:2016-05-04 09:36:55

标签: c# wpf events mvvm event-handling

我有DataGrid,我想在SelectAll()上关闭DataGrid方法。
确切地说这个按钮: enter image description here

这是Executed事件,将在后面的代码中处理:

   <DataGrid ItemsSource="{Binding EmployeeDataTable}" Name="dataGrid">
        <DataGrid.CommandBindings>
            <CommandBinding Command="ApplicationCommands.SelectAll" 
                                           Executed="SelectAll_Executed">
            </CommandBinding>
        </DataGrid.CommandBindings>            
    </DataGrid>
代码背后的代码:

private void SelectAll_Executed(object sender, ExecutedRoutedEventArgs e)
{
   //dataGrid.SelectAll();//I commented this line so user cannot select all rows 
   //in a datagrid         
}

以上代码完美无缺,用户无法选择DataGrid中的所有行,这就是我想要的。但我想将事件处理程序(SelectAll_Executed)移动到viewModel。

我尝试过的事情:

<DataGrid ItemsSource="{Binding EmployeeDataTable}" Name="dataGrid">
        <DataGrid.CommandBindings>
            <CommandBinding Command="ApplicationCommands.SelectAll" >
               <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Executed">
                        <i:InvokeCommandAction Command="{Binding Path=SomeCommand, Mode=OneWay}"/>
                    </i:EventTrigger>
               </i:Interaction.Triggers>
            </CommandBinding>
        </DataGrid.CommandBindings>            
    </DataGrid>

但我遇到了这样的错误:

  

附属物&#34;触发器&#34;只能应用于派生自&#34; DependencyObject&#34;的类型。 DataGridAddedColumns

如何使用MVVM规则处理CommandBinding的执行事件?

0 个答案:

没有答案