XAMLWerier / Reader -> несколько вызовов конструктора, приводящие к дублированию элементов

StackOverflow https://stackoverflow.com/questions/3182391

Вопрос

Я вроде застрял здесь. Я использую библиотеку Dragndrop, которая сериализует перетаскиваемые установления через XAMLWRITER .Save ().

Теперь я пытаюсь перетащить некоторые экземпляры класса расширяющейся сетки. В конструкторе я толкаю несколько элементов в визуальное дерево. Конструктор вызывается, когда объект является десериализированным, и элементы снова добавляются (и снова и снова в зависимости от того, как часто я драгла). К сожалению, дети. Квартира говорит мне, что нет детей-элементов, если я получу значение изнутри конструктора. Если я извлечу его снаружи (by mygrid.children.count), это дает мне более высокую (нежелательную) сумму.

Есть ли другая функция, которую я должен использовать для инициализации визуальных эффектов? или любой другой способ предотвратить эти дубликаты?

Спасибо и ура

Нет правильного решения

Другие советы

Потребовалось некоторое время, но я, кажется, нашел решение.
Теперь я могу создать базовый класс, уже содержащий визуальные элементы, все подклассы нуждаются. И они разрабатываются через XAMLWriter / Reader без дубликатов. Whew.

1) расширить USERCONTROL (не добавлять-> usercontrol, но добавить-> класс и унаследовать вручную)
2) Поместите стандартный инициализирующий файл (); в конструктор
3) реализовать инициализируйте контроль () и поставить макет, добавление ребенка и все, что там
4) XAMLWRITE / XAMLREAD / Уникал как сумасшедший

Надеюсь, это будет полезно для кого-то и что я не контролировал непредвиденный ..

- редактировать: конечно. Там будут дубликаты, но мы не можем их увидеть. После того, как XamlReader проходит в результате существующих уверенений, созданных моими инициализирующими (), и те, которые получают XAML-Parsed после этого. Любые ссылки в коде, рассматривают элементы управления, созданные код, которые не показывают: /

вздох.

Один из идеального пути вокруг этого - поставить переключатель в инициализированный обработчик событий, например:if(HasContent)
Initialize();
else
Reinitialize();
Multiinitialize();

где инициализация () добавит бы Увелики к визуальному дереву, повторное использование () просто находит правильные ссылки (по control = FindName("controlName")) и MultiInitialze () воссоздает обработчики событий и что еще заблудится на пути к XamlReader.

Ну, теперь вы можете создать экземпляр пользовательского унаследованного USERCONTROL в XAML, но нет простого способа установки атрибутов. То есть потому, что настройка атрибутов происходит перед инициализированным событием, и в ожидании ожидания нулевойпорциональныеxceptions. Вы можете работать вокруг этого с привязками, которые я думаю.

Но там будет проще. пожалуйста, дайте мне знать!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top