Как получить расстояние между ChildWindow и Parent Window? - PullRequest
2 голосов
/ 09 июля 2010

Можем ли мы рассчитать разрыв между ChildWindow и ParentWidnow?

Хотя я могу перетаскивать окно ChildWindow, есть расстояние сверху и слева.

Пока я пытаюсь получить расстояние, используя:

ChildWindow.Margin 

возвращается 0,0,0,0

Есть ли другой способ получить расстояние между ChildWindow и ParantWindow?

Ответы [ 2 ]

1 голос
/ 09 июля 2010

Дочерний элемент управления окна фактически занимает все доступное пространство в окне содержимого Silverlight. Первый элемент в шаблоне - оверлей Grid. Это this Grid, который затемняет содержимое «родительского» окна и использует все события мыши, которые в противном случае перешли бы в «родительский» контент.

Внутри Overlay Grid - еще одна 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");

С которого вы получаете наценку

0 голосов
/ 09 июля 2010

Поэкспериментируйте с методами PointToScreen и PointFromScreen ваших окон.

PointFromScreen статья

Статья PointToScreen

...