如何将WPF弹出窗口锚定到控件?

时间:2013-01-30 11:46:25

标签: c# wpf popup wpf-positioning

我决定使用模板化的PopUps来显示我的控件的验证错误,而不是ToolTips(似乎在样式方面提供了更大的灵活性)。 我正在寻找一种干净的方法来确保PopUps锚定到他们所指的控件上,所以当移动窗口时,它们会随之移动 ......

我有一个想法是遍历可视化树并手动将所有PopUps IsOpen属性设置为false ...这看起来像是一个" hack"。它不太理想,因为它可能会在其他事物之间闪烁......说到目前为止我在堆栈溢出中看到的很多解决方案似乎也有它们的缺陷。想法?

1 个答案:

答案 0 :(得分:1)

// Reference to the PlacementTarget.
DependencyObject myPopupPlacementTarget;

// Reference to the popup.
Popup myPopup; 

Window w = Window.GetWindow(myPopupPlacementTarget);
if (null != w)
 {
w.LocationChanged += delegate(object sender, EventArgs args)
{
    var offset = myPopup.HorizontalOffset;
    myPopup.HorizontalOffset = offset + 1;
    myPopup.HorizontalOffset = offset;
    };


}

从此link