c# - 触摸屏上的 WPF 模态对话框

标签 c# wpf modal-dialog touch

我在 WPF 应用程序中使用自定义模式对话框,它将在触摸设备 (Windows 10) 上运行。我正在使用 MVVM 模式。

我的问题:

根据打开对话框的位置,我体验到不同的触摸行为。例如,如果它是从按钮事件处理程序或通过按钮命令绑定(bind)打开的,则一切正常。然后对话框按钮(通常是“确定”和“取消”)在第一次触摸时关闭对话框。但是当从代码(不是由按钮事件或按钮命令绑定(bind)驱动)打开对话框时,对话框按钮在第一次触摸时响应。然后我需要在触摸按钮之前触摸对话框中的某个地方。这有点烦人。

我有一个 View 模型,其中实现了用于打开对话框的 ExitCommand。一些 XAML 示例:

这很好用:

<Button Content="Exit" Command="{Binding ExitCommand}"/>

这不能令人满意:

<Label Content="Exit">
    <Label.InputBindings>
        <MouseBinding Gesture="LeftClick" Command="{Binding ExitCommand}"/>
    </Label.InputBindings>
</Label>

如前所述,在没有任何用户操作的情况下从代码打开对话框也不起作用。

线索,有人吗?

最佳答案

我不确定这个解决方案是否能解决您的问题,但请试试这个:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

    <Label Content="Exit">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDown">
            <!-- MouseDown trigger for touch down too. -->
                <i:InvokeCommandAction Command="{Binding ExitCommand}"
                                       x:Name="exitCommandMouse" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Label>

我对网格(而不是标签)使用了类似的解决方案,它在 win 8.1 上与触摸屏完美配合。

关于c# - 触摸屏上的 WPF 模态对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42629083/

相关文章:

c# - 绑定(bind)WPF int和int?

c# - 如何给c#中的进程赋予ctrl + c?

c# - 使用 JavaScript/jQuery 从另一个类调用 C# 方法

c# - 当客户端甚至无法连接到 WCF 服务器时,为什么会出现 "server stack trace"异常?

c# - 如何在 WPF 中关注 ListviewItem?

c# - 自定义面板内的项目未正确排列

c# - 显示列表中的重复项 c#

vb6 - Form.hide 是否允许代码在 vb6 中继续 "beyond"a Form.Show Modal?

c# - 如何在unity 3d中单击对象时创建对话框并显示它?

javascript - Chrome 扩展注入(inject) HTML 模态弹出窗口