我们可以计算ChildWindow和ParentWidnow之间的差距吗?
虽然我可以在ChildWindow周围拖动,但是距离顶部和左侧有一个距离。
我尝试使用以下方式获取距离:
ChildWindow.Margin
它返回0,0,0,0
还有其他方法可以获得ChildWindow和ParantWindow之间的距离吗?
答案 0 :(得分:1)
子窗口控件实际占用Silverlight内容窗口上的所有可用空间。模板中的第一个元素是叠加层Grid
。它的这个网格使“父”窗口内容变暗,并消耗所有鼠标事件,否则这些事件会转到“父”内容。
Overlay Grid
内部是另一个名为“ContentRoot”的网格,其中包含边框,镶边和您的子内容。它的这个Grid
会被拖延并且会有一个保证金。
使用此扩展方法: -
public static class VisualTreeEnumeration
{
public static IEnumerable<DependencyObject> Descendents(this DependencyObject root)
{
int count = VisualTreeHelper.GetChildrenCount(root);
for (int i=0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(root, i);
yield return child;
foreach (var descendent in Descendents(child))
yield return descendent;
}
}
}
你可以找到ContentRoot: -
Grid contentRoot = myChildWindow.Descendents().OfType<Grid>().Where(g => g.Name == "ContentRoot");
从中获得保证金
答案 1 :(得分:0)