В качестве предыстории: в 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>
Итак... вернемся к вопросу :-) Кто-нибудь знает, как вообще остановить всплывающее окно WPF, смотрящее на этот параметр?
Для тех, у кого нет сенсорного устройства, вы можете получить доступ к настройкам планшетного ПК, выполнив:
C:\Windows\explorer.exe оболочка:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}
И посмотрите сами, какой беспорядок он делает :-)