是否可以在WPF/Touch应用程序中使用弹出窗口忽略MenuDropAlignment?

Ste*_*ins 16 wpf xaml multi-touch touch multidatatrigger

作为一个背景--Windows有一个Touch/TabletPCs工具,它可以根据你的"用手"移动弹出菜单/菜单的位置(以防止菜单出现在你的手下).

基本上这是做什么的,如果你被设置为"右手"(它似乎默认为你连接了一个触摸设备),你打开的每个弹出窗口被人为地踢到左边 - 这会导致我们尝试的大量布局问题并将弹出窗口与"弹出"项目对齐:

平板电脑设置设置为左手 - 不从Windows进行人工修正 平板电脑设置设置为左手 - 不从Windows进行人工修正

平板电脑设置设置为右手 - Windows人工调整我们的定位 平板电脑设置设置为右手 -  Windows人工调整我们的定位

我们可以使用SystemParameters.MenuDropAlignment来检测此设置的设置,对于普通的弹出窗口,我们可以使用弹出窗口的实际宽度来调整它 - 但是对于动态弹出窗口以及当我们将右向左支撑放入混合时,这只是没有'工作.

目前看起来我们更有可能必须经历每个弹出窗口,手动设计一个值来调整踢,并为每个弹出一个类似的东西:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Source={x:Static SystemParameters.MenuDropAlignment}}" Value="True"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=FlowDirection}" Value="RightToLeft"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.Setters>
        <Setter Property="HorizontalOffset" Value="-50"/> <!-- Set to arbitrary value to test -->
    </MultiDataTrigger.Setters>
</MultiDataTrigger>
Run Code Online (Sandbox Code Playgroud)

那么..回到问题:-)有没有人知道如何停止WPF弹出窗口看这个设置呢?

对于那些没有触摸设备的用户,您可以通过运行以下方式访问Tablet PC设置:

C:\ Windows\explorer.exe shell ::: {80F3F1D5-FECA-45F3-BC32-752C152E456E}

并看到它为自己造成的混乱:-)

Ste*_*ins 0

看来这是不可能的,因此我们求助于问题中的 MultiDataTrigger 来进行补偿。