【发布时间】:2020-05-06 11:39:00
【问题描述】:
我有一个弹出窗口,它的大小会动态变化以适应内容。当大小增加时,弹出窗口的宽度仅向左增加,直到它到达窗口的左边缘。但在我的情况下,我希望弹出宽度在正确的方向上增加。
下面是我正在使用的代码sn-p
XAML:
<StackPanel>
<TextBox x:Name="popupText" Margin="5"/>
<Button Content="Change PopupText" Click="Button_Click_1" Margin="5"/>
<Canvas x:Name="canvas" Width="200" Height="200" Background="Red">
<Rectangle x:Name="rect" Canvas.Top="50" Canvas.Left="50"
Width="50" Height="100"
Stroke="White" StrokeThickness="3"/>
<Popup x:Name="popup" AllowsTransparency="true"
IsOpen="True" Placement="Relative"
PlacementTarget="{Binding ElementName=canvas}"
PlacementRectangle="50,50,50,100"
HorizontalOffset="0"
>
<TextBlock x:Name="textBlock" FontSize="14" Background="Yellow"
TextWrapping="Wrap" >
This is a popup with a PlacementRectangle.
</TextBlock>
</Popup>
</Canvas>
</StackPanel>
C#:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
this.textBlock.Text += this.popupText.Text;
}
屏幕截图:
改变大小之前
改变大小后
在文本框中输入任何内容,然后单击“更改 PopupText”按钮。您可以清楚地看到弹出窗口的大小向左增加。
以上是弹出的一种行为吗?我可以改变这种行为并在正确的方向增加弹出宽度吗?
提前致谢, 肖比卡。
【问题讨论】:
-
Popup的方向由操作系统级别的“惯用手”设置确定。在支持任何类型的笔/平板电脑的设备上,这将使弹出窗口在左侧打开并默认朝该方向展开。这是一个 SO 问题,它讨论了它以及您可以覆盖它的方法:stackoverflow.com/questions/18113597/wpf-handedness-with-popups
标签: wpf popup resize wpf-controls