1
我需要確定畫布中包含的子項的繪製順序。在WPF Canvas.Children上查找繪畫順序問題
這完美的作品大部分時間,但有時我從該代碼得到一個錯誤:
private Panel FindWindowRoot(FrameworkElement child)
{
FrameworkElement current = child;
while(current as Window == null)
{
current = (FrameworkElement)VisualTreeHelper.GetParent(current);
}
return ((Window)current).Content as Panel;
}
呼叫VisualTreeHelper.GetParent(current)
最終拋出一個異常,所以我碰到這個Q/A跑「價值不能爲空。」
下面是我如何使用DrawOrderComparer
的一個示例。
ucVertexControl Control = new ucVertexControl(vertex);
cnvDrawingArea.Children.Add(Control);
SortedChildren = cnvDrawingArea.Children.OfType<FrameworkElement>().OrderByDescending(x => x, new Classes.DrawOrderComparer()).Cast<UIElement>().ToList();
我的理論是,排序發生在新的控件甚至有一個父定義,因爲它後來被某些事件設置。問題是我不知道是什麼事件,如果我可以聽。
任何人有任何想法?