Можно ли получить всплывающее окно для игнорирования MenuDropAlignment в приложении WPF / Touch?

Вкратце - Windows имеет средство для сенсорных / планшетных ПК, с помощью которого она меняет положение всплывающих окон / меню в зависимости от вашей «руки» (чтобы меню не появлялось у вас под рукой).

По сути, это означает, что если вы настроены на «правую руку» (что, кажется, по умолчанию, после подключения сенсорного устройства), каждое открываемое вами всплывающее окно искусственно смещается влево - это вызывает серьезные проблемы с макетом где мы пытаемся выровнять всплывающее окно с элементом, из которого оно «появилось»:

Настройки планшетного ПК установлены на Левша - без искусственной коррекции из Windows Tablet PC Settings set to Left handed - no artificial correction from Windows

Настройки планшетного ПК установлены на Правшу - Windows искусственно корректирует наше положение Tablet PC Settings set to Right handed - Windows artificially adjusts our positioning

Мы можем определить, что этот параметр установлен, с помощью SystemParameters. MenuDropAlignment , и для тривиальных всплывающих окон мы можем настроить это, используя фактическую ширину всплывающего окна, но для динамических всплывающих окон и когда мы добавляем поддержку справа налево в микс, это просто не работает.

В настоящее время он ищет более вероятно, что нам придется просматривать каждое всплывающее окно, вручную определять значение для регулировки удара и добавлять что-то подобное к каждому из них:


    
        
        
    
    
         
    

Итак ... возвращаясь к вопросу :-) Кто-нибудь знает о способ вообще остановить всплывающее окно WPF, смотрящее на этот параметр?

Для тех, кто не Если у вас есть сенсорное устройство, вы можете получить доступ к настройкам планшетного ПК, запустив:

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

И посмотрите, какой беспорядок он создает для себя: -)

16
задан Anatoliy Nikolaev 20 July 2013 в 14:06
поделиться