触摸屏上的WPF模式对话框

时间:2017-03-06 15:12:24

标签: c# wpf modal-dialog touch

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

我的问题:

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

我有一个实现了ExitCommand的视图模型,可以打开对话框。一些XAML示例:

这很好用:

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

这不能令人满意:

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

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

线索,有人吗?

1 个答案:

答案 0 :(得分:0)

我不确定此解决方案是否可以解决您的问题,但请尝试一下:

的xmlns:I =&#34; 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上与触摸屏完美配合。