Сейчас я работаю с некоторыми материалами WPF.В процессе объединения трех очень похожих форм в одну я столкнулся с проблемой.Код, который я написал, работает, но кажется, что это далеко не лучшее решение, поэтому я решил попросить более широкую аудиторию об обратной связи и / или о лучших решениях.
Некоторая справка
Три формы имеют много общего с XAML и выделенным кодом, но в каждой форме есть раздел, который отличается.Я сохранил весь общий код в одной форме и разделил части, отличающиеся на UserControls, с целью динамической загрузки одной из них в контейнер во время выполнения.Мы используем MVVM, поэтому форма имеет ViewModel, как и новые UserControls.Естественно, ViewModel формы действует как родитель и содержит ViewModel новых UserControls как дочерние.
Сам вопрос
Изначально я использовал ContentControl с DataTemplateSelector для выбора изчисло шаблонов данных, каждый из которых содержал один из пользовательских элементов управления.Свойство из родительской модели представления, привязанное к свойству ContentControl Content, использовалось в DataTemplateSelector, чтобы выбрать, какой DataTemplate использовать.Поскольку я не был слишком увлечен необходимостью установить свойство Content, я переключился на использование Style с DataTriggers в ContentControl, выполняя практически ту же задачу.Тем не менее, мне нужно иметь возможность обходить логическое дерево (для проверки ошибок, если вам интересно), и установка ContentTemplate с помощью любого из методов, по-видимому, не позволяет мне продолжать вдоль логического дерева в UserControl из ContentControlкак только он загружен.UserControl видим в контейнере, и с ним связана правая ViewModel через определение DataTemplate, но ContentControl не имеет логических дочерних элементов, поскольку свойство Content имеет значение null.Итак, решение, к которому я обратился, это проверка соответствующего свойства в родительской модели представления в конструкторе формы и явная реализация одного из UserControls в свойстве ContentControl Content.Как только это будет сделано, я могу перейти логическое дерево в UserControl.Кажется, должен быть лучший способ сделать что-то, чем этот, возможно, какой-то способ сделать все это в XAML.
Итак ...
Есть ли лучший способдинамически выбирать и создавать один из моих UserControls?Звучит ли логично, что моя основная техника разделения частей формы на UserControls логична?Кажется, что это что-то, что должно быть довольно распространенным явлением, повторное использование окна, но изменение некоторых его частей, но я не нашел много в своих путешествиях с Google.Возможно, я не смотрел в нужных местах ...