我不能保證這個問題是很相似的幫助,但我想,既然我無法找到我自己的問題,我會在這裏發佈,因爲這是類似的,一個很好的答案,我想通了,如何解決我的問題。
我有帆布控制工作,並具有被放置在畫布上,並有的ItemsControl控件的XAML UI定義的一部分,複雜的UI元素。該的ItemsControl的在他們的ItemTemplate定義的DataTemplates集。
因此,我的對象的某些方面只有在Visual Tree更新後纔會完全生成。這不是拖拽和使用這些項目時的問題,因爲當我需要它們時,ItemContainerGenerator已經生成了這些項目。但是,在可視化樹繪製自己之前,嘗試在Canvas加載時從數據庫重新生成項目時,這是一個問題。
我發現的唯一真正的方法來解決這個問題是隻啓動上放置在畫布上的「輔助對象」(即配合物進入該ItemContainerGenerators使物體)一旦LayoutUpdated事件畫布有工作被解僱。
public class DesignerCanvas : Canvas
{
public void LoadCanvasFromDB()
{
...
[loading items from the database, part one]
LayoutUpdated += DesignerCanvas_LayoutUpdated;
}
void DesignerCanvas_LayoutUpdated(object sender, EventArgs e)
{
LayoutUpdated -= DesignerCanvas_LayoutUpdated;
[loading items from the database which tie to UI elements from part one]