【发布时间】:2013-12-03 22:32:53
【问题描述】:
我遇到了一个奇怪的 WPF 弹出窗口放置问题。
我已经定义了这个 XAML:
<Window x:Class="PositionBug.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="525">
<Grid>
<TextBlock Name="Textblock1" Height="60" Width="300" Background="LightGray" HorizontalAlignment="Center"
VerticalAlignment="Bottom">The PlacementTarget</TextBlock>
<Popup Name="Popup1" PlacementTarget="{Binding ElementName=Textblock1}" Placement="Top" Width="120" Margin="198,0,199,0" IsOpen="True">
<TextBlock Background="LightBlue" FontSize="18">This is a Popup</TextBlock>
</Popup>
</Grid>
在大多数计算机上,这是预期的结果:
但是,在一个特定计算机型号的多个单元上,结果显示如下:
有没有办法强制放置在顶部和左侧?
【问题讨论】:
-
这很奇怪!您是否检查过它们都使用相同版本的 .NET 框架并且两种显示分辨率相同?
-
所有计算机都运行 1024x768 显示分辨率和相同版本的 .NET Framework。我试过 4、4.5 和 4.5.1,结果相同。
-
你解决过这个问题吗?我发现控制弹出窗口是左还是右的系统设置会影响这一点,但我找不到很好的解决方案。
-
不,我从来没有找到解决方案。那个系统设置在哪里?
-
我在用于开发的 HP Envy 笔记本电脑上遇到了相同的行为,即顶部或底部放置右对齐弹出窗口。我们的其他开发人员没有看到这种行为,但他们有不同的笔记本电脑品牌。绝对似乎是特定于机器/配置的。在目标、弹出和弹出内容上使用 FlowDirection 属性也没有帮助。该死!