我有弹出窗口。
在GridView
中单击按钮时,将显示弹出窗口。我将VerticalOffset
和HorizontalOffset
设置为弹出窗口。
但是我有问题,当我滚动GridView
时弹出窗口没有移动。
我可以设置绝对弹出窗口吗?
答案 0 :(得分:1)
正如documentation所说,Boundable
属性设置相对于应用程序窗口的位置:
获取或设置应用程序左侧之间的距离 窗口和弹出窗口的左侧。
这意味着位置是相对于窗口的绝对位置,并且在滚动Offset
时不会自动更新。相反,您必须通过观察滚动查看器事件来手动更新它。首先使用GridView
在VisualTreeHelper
内找到ScrollView
:
GridView
您可以像这样使用此辅助方法:
public static ScrollViewer FindScrollViewer(DependencyObject d)
{
if (d is ScrollViewer) return d as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++)
{
var child = VisualTreeHelper.GetChild(d, i);
var result = FindScrollViewer(child);
if (result != null) return result;
}
return null;
}
现在附加var scrollViewer = FindScrollViewer(MyGridView);
或scrollViewer.ViewChanged
事件,并根据需要更新弹出位置。