在将WPF应用程序移植到在VMware下运行的Windows 8实例(x64)时,我发现所有弹出窗口都与它们应该是的错误对齐.进一步调查显示,即使对于新创建的项目,这也是一个常见的"问题".WPF的弹出控件似乎改变了左右的含义!可以通过使用vs 2012创建一个wpf应用程序并在其中放置一些弹出窗口来显示问题,例如:
<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>
Run Code Online (Sandbox Code Playgroud)
应该在左侧显示的弹出窗口实际显示在右侧,反之亦然,应该在左下方的弹出窗口显示在右下方等.
我的问题是:1)这是一个错误或功能吗?2)如果它是一个功能,如何对代码进行最小化更改,以便它们在Windows 7和Windows 8中以相同的方式执行?
SFD*_*nan 17
进一步调查显示控制面板内有一个设置:ControlPanel->硬件和声音 - >平板电脑(节点名称可能不完全匹配,因为我使用的是非英文版的Windows 8).有一个用户喜欢写的手的设置.
必须根据.net框架的手册选择"我更喜欢用左手书写",以便将弹出窗口置于"正确位置"(不使用上面的解决方案).这个假设根本不对,至少对于destop应用程序!
| 归档时间: |
|
| 查看次数: |
2353 次 |
| 最近记录: |