【问题标题】:How to resize popup in right direction?如何在正确的方向调整弹出窗口的大小?
【发布时间】: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


【解决方案1】:

您可能想看看custom popup placements

在弹出窗口中设置Placement="Custom" 并使用CustomPopupPlacementCallback 属性引用回调。在回调中,您可以计算相对于您的展示位置目标的首选展示位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多