我在 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/