如何在WPF中手动触发RelayCommand?

当阮

我有一个代码片段,如下所示:

XAML

...
<DataGrid>
   <i:Interaction.Triggers>
       <i:EventTrigger EventName="PreviewKeyDown">
           <mvvm:EventToCommand Command="{Binding KeyDownLocationDG}" />
       </i:EventTrigger>
   </i:Interaction.Triggers> 
</DataGrid>

视图模型

public class A
{
    public RelayCommand<KeyEventArgs> KeyDownLocationDG { get; set; }

    public A()
    {
        KeyDownLocationDG = new RelayCommand<KeyEventArgs>(TestMethod);

        App.processBarcodeData = new App.ProcessBarCodeData((barcode) =>
        {
            DoSomething();
            // then I ONLY want to trigger KeyDownLocationDG command here
        });
    }

    private void TestMethod(KeyEventArgs e)
    {
         ...
    }
}

我也有一个MainWindow.xaml文件,在代码隐藏(MainWindow.xaml.cs)中有一个对象KeyPressed事件RawPresentationInput每当此事件触发时,我都会打电话给processBarcodeData代表。如果按DataGrid上的一个键,TestMethod将立即执行该操作,但是我不想这样做,我要使它只能在DoSomething()完成后才能运行。

有人能帮我吗?谢谢。

里罗

DataGrid.PreviewKeyDown。事件较早调用Window.KeyPress

PreviewKeyDown在MainWindow中使用事件,或在网格中指定所有操作:

<DataGrid>
   <i:Interaction.Triggers>
       <i:EventTrigger EventName="PreviewKeyDown">
           <mvvm:CallMethodAction Method="DoSomething" />
           <mvvm:EventToCommand Command="{Binding KeyDownLocationDG}" />
       </i:EventTrigger>
   </i:Interaction.Triggers> 
</DataGrid>`

在第二种情况下,还应进行设置KeyEventArgs.IsHandled = true;以防止将事件降级到Window,但可能会产生不良影响

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在PySide中手动触发aboutToQuit信号

来自分类Dev

如何在jqgrid中手动触发onclicksubmit事件?

来自分类Dev

如何在Telerik RadGrid中手动触发PostBackOnFilter?

来自分类Dev

如何在Eclipse PDT中为PHP项目手动触发DLTK索引

来自分类常见问题

如何在ReactJS中手动触发点击事件?

来自分类Dev

如何在Salt中手动触发cmd.wait脚本?

来自分类Dev

如何在mongoDB中的副本集之间实现同步。需要自动还是手动触发?

来自分类Dev

如何手动触发更改事件?

来自分类Dev

如何手动触发弹簧验证?

来自分类Dev

如何手动触发事件

来自分类Dev

如何手动触发“关闭显示”?

来自分类Dev

如何手动触发 Hangfire 作业?

来自分类Dev

如何手动触发提交功能?

来自分类Dev

如何在SSRS中手动删除订阅?

来自分类Dev

如何在MVC 6中手动验证模型

来自分类Dev

如何在C中手动迭代堆栈帧?

来自分类Dev

如何在Android Studio中手动运行Proguard?

来自分类Dev

如何在ReactJS中手动设置输入值?

来自分类Dev

如何在Python中手动创建稀疏矩阵

来自分类Dev

如何在自制软件中手动安装zenity?

来自分类Dev

如何在Magento中手动更新库存数量

来自分类Dev

如何在iOS钥匙串中手动存储?

来自分类Dev

如何在Visual C ++中手动处理名称?

来自分类Dev

如何在RabbitMQ中手动提取队列数据?

来自分类Dev

如何在Symfony中手动管理CRSV令牌?

来自分类Dev

如何在JOOQ中手动创建RecordN的实例?

来自分类Dev

如何在Solr中手动合并线段?

来自分类Dev

如何在angularjs中手动停止摘要循环

来自分类Dev

如何在Rails中手动插入分页符?