2012-10-17 2 views
15

VMware에서 실행중인 Windows 8 인스턴스 (x64)로 WPF 응용 프로그램을 이식하는 동안 모든 팝업이 예상 한 것과 잘못 정렬되는 것을 발견했습니다. 추가 조사를 통해 이것이 새로 생성 된 프로젝트의 경우에도 일반적인 "문제"임을 알 수 있습니다. WPF의 팝업 컨트롤은 왼쪽과 오른쪽의 의미를 변경 한 것 같습니다! ,windows 8 팝업 위치

<Grid Background="Gray"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="129*"/> 
     <ColumnDefinition Width="264*"/> 
     <ColumnDefinition Width="124*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="30"/> 
     <RowDefinition Height="30"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <DockPanel Grid.Row="1" Grid.Column="1" Background="LightGray"> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Right" AllowsTransparency="True" > 
      <TextBlock Text="Right" Foreground="White" /> 
     </Popup> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Left" AllowsTransparency="True" > 
      <TextBlock Text="Left" Foreground="White" /> 
     </Popup> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Top" AllowsTransparency="True" > 
      <TextBlock Text="Top" Foreground="White" /> 
     </Popup> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Bottom" AllowsTransparency="True" > 
      <TextBlock Text="Bottom" Foreground="White" /> 
     </Popup> 
    </DockPanel> 
</Grid> 

실제로 권리와 그 반대에 표시되는 왼쪽에 표시하도록되어 팝업을 :이 문제는 2012 대를 사용하여 WPF 응용 프로그램을 작성하여 표시하고처럼, 거기에 약간의 팝업을 넣을 수 있습니다 왼쪽 하단에 있어야하는 것은 오른쪽 하단에 표시됩니다.

내 질문 : 1) 이것은 버그 또는 기능인가요? 2) 그것이 기능이라면 코드가 Windows 7과 Windows 8 내부에서 같은 방식으로 수행되도록 코드를 변경하는 방법은 무엇입니까?

+0

Xaml을 실행중인 환경과 똑같은 환경에 복사 했으므로 정확한 위치의 팝업과 함께 올바르게 작동합니다. –

+0

내 경우와 다른 점은 없습니다. Windows 8의 릴리스 버전을 실행하고 있습니까? Developer Preview 나 Consumer Preview 버전의 Windows 8에서 동일한 응용 프로그램을 실행하려고 시도했을 때 아무런 문제가없는 것 같습니다. –

+0

VMware Player에서 릴리스 비트를 실행 중입니다. –

답변

17

자세한 조사 결과 제어판의 설정이 있음을 알 수 있습니다 : ControlPanel-> Hardware and Sound-> Tablet PC (영문 버전이 아닌 Windows 8을 사용하고 있기 때문에 노드 이름이 정확하지 않을 수 있음). 사용자가 쓰기를 원하는 것을 사용하는 손에 대한 설정이 있습니다.

.net 프레임 워크 매뉴얼에 따라 "위의 해결 방법을 사용하지 않고"올바른 위치에 팝업을 배치하려면 "왼손을 사용하여 글을 선호합니다"를 선택해야합니다. 이 가정은 적어도 destop 응용 프로그램에는 전혀 맞지 않습니다!

+1

이 팁으로 수 시간의 조사 시간을 절약 할 수있었습니다. –

+1

조사 시간을 절약 해 주셨습니다. 감사! – TcKs

+0

진지하게 ... 지금 단지 2 시간 동안 그것으로의. .. 이것은 매우 더 많은 시간을 절약했다. 이런 이유로 stackoverflow를 좋아합니다! – TravisWhidden

4

우리는이 간단한 해결책을 작성하고 이전에 게시 한 다른 SO 스레드에 코드를 게시했습니다. 이 수정을 통해 앱에서 위치 문제가 모두 제거됩니다 (원하는 경우).

Popup Position with Handedness change

희망이 사람을 도와줍니다!