У меня есть фреймворк mvvm, очень похожий на образец Джоша Смита. Проблема в том, что я только что обнаружил, что каждый раз, когда я по какой-то причине отображаю модель представления, связанный конструктор представления запускает ДВАЖДЫ. И это мешает в другом месте приложения. Конечно, в обоих случаях стек вызовов является пустым, внешним, поэтому я не могу сказать, кто делает «обновление». Я знаю, что это не я, я не «новый» взгляд нигде. Это не дубликаты шаблонов данных, потому что они даже не допускают дублирования шаблонов.
1) Как я могу выяснить, кто обновляет представление?
2) как я могу зацепиться за «магию» между обновлением моей модели представления и когда закулисное авто WPF выясняет, какой вид использовать, и отображать новости в представлении?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Так же, как пример Джоша Смита, у меня есть шаблоны данных, которые связывают модель представления с видом. Как и у Джоша Смита, у меня есть коллекция моделей, связанных с элементом управления вкладками. Когда новая модель представления создается и добавляется в эту коллекцию, волшебное поле использует шаблоны данных в xaml для определения представления, волшебное окно сообщает о представлении, привязывает текстовый вид представления к моей модели представления и появляется новая вкладка. Все это происходит за кулисами внутри .net. Я никогда не новое мнение. Я только создаю новую модель просмотра и затем добавляю ее в коллекцию.
В СХЕМЕ ЗАДАЧИ ПРОБЛЕМЫ XAML:
Если я по какой-то причине использую ComboBox, это приводит к созданию нового представления из коллекции Items, которая представляет собой список ViewModels. Но если я использую меню, дополнительный вид не создается.
<!--
<ComboBox Name="TabMenus" ItemsSource="{Binding RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type lc:MultiStepPanel}}, Path=Items}" Width="15" Height="15" Margin="2" >
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="{Binding VisibleDisplayName}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
-->
<Menu Name="TabMenus" Style="{StaticResource TabMenuDropDownStyle}" >
<MenuItem Style="{StaticResource TabMenuButtonStyle}"
ItemsSource="{Binding RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type lc:MultiStepPanel}}, Path=Items}"
ItemContainerStyle="{StaticResource TabMenuItem}" />
</Menu>
Оба элемента управления имеют одинаковый элемент ItemsSource xaml. Почему комбо вызывает новый вид?