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