我决定使用模板化弹出窗口来显示我的控件的验证错误,而不是工具提示(似乎在样式方面提供了更大的灵活性)。我正在寻找一种干净的方法来确保弹出窗口被锚定到它们所指的控件上,因此当窗口移动时,它们会随之移动......
我的一个想法是遍历可视化树并手动将所有 PopUps IsOpen 属性设置为 false ......这似乎有点“黑客”。它不太理想,因为它可能会在其他事情中闪烁......话虽如此,我到目前为止在stackoverflow上看到的很多解决方案似乎也有它们的缺陷。想法?
我决定使用模板化弹出窗口来显示我的控件的验证错误,而不是工具提示(似乎在样式方面提供了更大的灵活性)。我正在寻找一种干净的方法来确保弹出窗口被锚定到它们所指的控件上,因此当窗口移动时,它们会随之移动......
我的一个想法是遍历可视化树并手动将所有 PopUps IsOpen 属性设置为 false ......这似乎有点“黑客”。它不太理想,因为它可能会在其他事情中闪烁......话虽如此,我到目前为止在stackoverflow上看到的很多解决方案似乎也有它们的缺陷。想法?
// 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;
};
}
从这个链接