2017-01-21 5 views
0

У меня есть три XML HierarchicalDataTemplates. Они загружаются во время выполнения, а затем назначаются TreeView.ItemTemplate. Это код, который я использовал, успешно, около шести лет назад в аналогичном проекте. Он не только не работает сейчас (оригинальный проект все еще загадочно работает нормально), но, честно говоря, я не могу понять код, который я написал шесть лет назад, или , почему он работает! Вот фрагмент кода (OOB является TreeView):Каков надлежащий метод назначения нескольких иерархических шаблонов DataTemplates для элемента TreeView ItemTemplate?

 //This is for dynamically building a treeview with templates from an XML file 
     XmlTextReader xmlReader1 = new XmlTextReader("HierarchicalDataTemplate1.xml"); 
     HierarchicalDataTemplate hierarchicalDataTemplate1 = XamlReader.Load(xmlReader1) as HierarchicalDataTemplate; 

     XmlTextReader xmlReader2 = new XmlTextReader("HierarchicalDataTemplate2.xml"); 
     HierarchicalDataTemplate hierarchicalDataTemplate2 = XamlReader.Load(xmlReader2) as HierarchicalDataTemplate; 
     hierarchicalDataTemplate1.ItemTemplate = hierarchicalDataTemplate2; 

     XmlTextReader xmlReader3 = new XmlTextReader("HierarchicalDataTemplate3.xml"); 
     HierarchicalDataTemplate hierarchicalDataTemplate3 = XamlReader.Load(xmlReader3) as HierarchicalDataTemplate; 
     hierarchicalDataTemplate2.ItemTemplate = hierarchicalDataTemplate3; 

     OOB.ItemTemplate = hierarchicalDataTemplate1; 

     Thread updateThread = new Thread(new ParameterizedThreadStart(UpdateTree)); 
     updateThread.Start(this); 

TreeView (OOB) отображает первые два уровня узлов правильно, но не третий. Учитывая, что я не вижу, как третий иерархический файл DataTemplate привязан к OOB.ItemTemplate, это неудивительно (ну, что удивительно, почему он работает правильно в коде, который я написал шесть лет назад).

Может ли кто-нибудь сказать мне, как правильно назначить три отдельных файла XML hierarchicalDataTemplate для TreeView? Благодаря!

+0

Если у вас есть рабочее решение, использующее тот же код и нерабочий, то, вероятно, лучший способ - попытаться ** сократить ** рабочее решение до нерабочего поэтапного. Скопируйте это рабочее решение и начните удалять все, что не связано с новым приложением, - в конце концов вы либо будете иметь что-то, что необъяснимо работает, но по крайней мере может быть использовано в качестве основы для нового приложения или, скорее всего, вас найдет недостающую часть, которая позволила бы, чтобы старое приложение работало в первую очередь. –

+0

Ну, я сделал сравнение с программой diff, и соответствующие части кажутся одинаковыми. Я не могу понять, как hiearchicalDataTemplate3 когда-либо назначается OOB.ItemTemplate. – zetar

+0

Diff - это одно. Сокращение - другое - причина, по которой он работает, может быть в тех частях, которые вы не считаете актуальными. И 'hiearchicalDataTemplate3', кажется, назначается в' hierarchicalDataTemplate2.ItemTemplate = hierarchicalDataTemplate3; '. –

ответ

0

Это была не проблема. Это было так, как был создан XML-файл HierarchicalDataTemplate с помощью Xpath. Сожалею! И спасибо!