【发布时间】:2025-01-06 21:55:01
【问题描述】:
在我的示例 wpf 应用程序中,我向窗口添加了一个按钮和一个弹出窗口。该按钮位于右下角,弹出窗口已将“PlacementTarget”属性设置为它并将“Placement”设置为顶部。弹出窗口由一个很长的文本块组成。
我期望这个弹出窗口的行为不会超出窗口,因此会自动将他的“HorizontalOffset”设置为适当的值,但弹出窗口的行为违背了我的意图。
这是我的 xaml 文件:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1" x:Name="window" x:Class="WpfApplication1.MainWindow"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:Converters x:Key="Converters"/>
</Window.Resources>
<Grid>
<Button x:Name="button" Content="Button" VerticalAlignment="Bottom" Width="75" HorizontalAlignment="Right"/>
<Popup Placement="Top" PlacementTarget="{Binding ElementName=button, Mode=OneWay}" IsOpen="True">
<TextBlock TextWrapping="Wrap" Text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" Background="White"/>
</Popup>
</Grid>
有人知道怎么解决吗? 我读过这应该是默认的弹出行为,以照顾超出边界,但在我的情况下不是。提前致谢。
【问题讨论】:
-
这不适用于
Popup,但您可以将TextBlock.TextTrimming用于TextBlock。引用自 MSDN:Gets or sets the text trimming behavior to employ when content overflows the content area.. -
我只在这个例子中使用了 TextBlock。在实际情况下,Popup 的内容将是带有一些按钮的堆栈面板。