Как изменить размер всплывающего окна в правильном направлении? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть всплывающее окно, размер которого изменяется динамически, чтобы соответствовать содержимому. Когда размер увеличивается, ширина всплывающего окна увеличивается только влево, пока не достигнет левого края окна. Но в моем случае я хочу, чтобы ширина всплывающего окна увеличивалась в правильном направлении.

Ниже приведен фрагмент кода, который я использую

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;
}

Снимки экрана:

Перед изменением размера

enter image description here

После изменения размера

enter image description here

Введите что-нибудь в поле текстовое поле и нажмите кнопку «Изменить всплывающий текст». вы можете ясно видеть, как размер всплывающего окна увеличивается влево.

Выше одного поведения всплывающего окна? Могу ли я изменить это поведение и увеличить ширину всплывающего окна в правильном направлении?

Заранее спасибо, Шобика.

1 Ответ

0 голосов
/ 06 мая 2020

Вы можете посмотреть на настраиваемые места размещения всплывающих окон .

Установите Placement="Custom" во всплывающем окне и используйте свойство CustomPopupPlacementCallback для ссылки на обратный вызов. В обратном вызове вы можете рассчитать предпочтительные места размещения относительно целевого места размещения.

...