Вкратце - Windows имеет средство для сенсорных / планшетных ПК, с помощью которого она меняет положение всплывающих окон / меню в зависимости от вашей «руки» (чтобы меню не появлялось у вас под рукой).
По сути, это означает, что если вы настроены на «правую руку» (что, кажется, по умолчанию, после подключения сенсорного устройства), каждое открываемое вами всплывающее окно искусственно смещается влево - это вызывает серьезные проблемы с макетом где мы пытаемся выровнять всплывающее окно с элементом, из которого оно «появилось»:
Настройки планшетного ПК установлены на Левша - без искусственной коррекции из Windows
Настройки планшетного ПК установлены на Правшу - Windows искусственно корректирует наше положение
Мы можем определить, что этот параметр установлен, с помощью SystemParameters. MenuDropAlignment , и для тривиальных всплывающих окон мы можем настроить это, используя фактическую ширину всплывающего окна, но для динамических всплывающих окон и когда мы добавляем поддержку справа налево в микс, это просто не работает.
В настоящее время он ищет более вероятно, что нам придется просматривать каждое всплывающее окно, вручную определять значение для регулировки удара и добавлять что-то подобное к каждому из них:
Итак ... возвращаясь к вопросу :-) Кто-нибудь знает о способ вообще остановить всплывающее окно WPF, смотрящее на этот параметр?
Для тех, кто не Если у вас есть сенсорное устройство, вы можете получить доступ к настройкам планшетного ПК, запустив:
C: \ Windows \ explorer.exe shell ::: {80F3F1D5-FECA-45F3-BC32-752C152E456E}
И посмотрите, какой беспорядок он создает для себя: -)