C# 相对控制位置改变时如何控制弹出控制显示位置

C# 相对控制位置改变时如何控制弹出控制显示位置,c#,.net,wpf,C#,.net,Wpf,我正在使用弹出控件显示验证错误消息。我正在使用“PlacementTarget”属性基于父控件设置弹出控件位置。它在大多数情况下工作正常。(截图1)但若我将窗口移到右侧,那个么在并没有足够空间完全显示弹出控件的地方,它只会移动到某个随机位置。(截图-2) 我的问题是,当没有太多空间(通过获取事件或使其不可见)或以某种方式收到位置将要更改的通知时,我是否可以控制弹出控件的位置 XAML-> <Popup x:Name="ErrorPopup " PlacementTarget="{Bi

我正在使用弹出控件显示验证错误消息。我正在使用“PlacementTarget”属性基于父控件设置弹出控件位置。它在大多数情况下工作正常。(截图1)但若我将窗口移到右侧,那个么在并没有足够空间完全显示弹出控件的地方,它只会移动到某个随机位置。(截图-2)

我的问题是,当没有太多空间(通过获取事件或使其不可见)或以某种方式收到位置将要更改的通知时,我是否可以控制弹出控件的位置

XAML->

<Popup x:Name="ErrorPopup "
   PlacementTarget="{Binding ElementName=Part_TextBlock}"
   Placement="Right"
   HorizontalOffset="{TemplateBinding ErrorHorizontalOffset}"
   StaysOpen="True"
   VerticalOffset="{TemplateBinding ErrorVerticalOffset}">
 void Owner_LocationChanged(object sender, EventArgs e)
 {
 if (ErrorPopup == null)
      return;
            if (ErrorPopup.IsOpen)
            {
                var offset = ErrorPopup.HorizontalOffset;
                ErrorPopup.HorizontalOffset = offset + 1;
                ErrorPopup.HorizontalOffset = offset;
            }
        }