У меня есть три 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? Благодаря!
Если у вас есть рабочее решение, использующее тот же код и нерабочий, то, вероятно, лучший способ - попытаться ** сократить ** рабочее решение до нерабочего поэтапного. Скопируйте это рабочее решение и начните удалять все, что не связано с новым приложением, - в конце концов вы либо будете иметь что-то, что необъяснимо работает, но по крайней мере может быть использовано в качестве основы для нового приложения или, скорее всего, вас найдет недостающую часть, которая позволила бы, чтобы старое приложение работало в первую очередь. –
Ну, я сделал сравнение с программой diff, и соответствующие части кажутся одинаковыми. Я не могу понять, как hiearchicalDataTemplate3 когда-либо назначается OOB.ItemTemplate. – zetar
Diff - это одно. Сокращение - другое - причина, по которой он работает, может быть в тех частях, которые вы не считаете актуальными. И 'hiearchicalDataTemplate3', кажется, назначается в' hierarchicalDataTemplate2.ItemTemplate = hierarchicalDataTemplate3; '. –