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

时间:2017-05-10 21:19:46

标签: c# .net wpf

我正在使用弹出控件来显示验证错误消息。我通过使用" PlacementTarget"来设置基于父控件的弹出控件位置。属性。它在大多数情况下工作正常。(Screenshot-1 enter image description here)但是如果我将Window移动到右侧,那么没有足够的空间来完全显示弹出控件,它只会移动到某个随机位置。 (截图-2 enter image description here

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

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

0 个答案:

没有答案