Когда я пытаюсь указать несколько DataTemplates для использования ContentControl, чтобы использовать правильный (на основе типа), я в конечном итоге получаю контент, Значение ToString().Как автоматически использовать DataTemplate на основе DataType ContentControl CurrentType
<ContentControl DataContext="{Binding MyTreeRootViewModels}" Content="{Binding /, Path=CurrentlySelectedTreeViewModel}">
<ContentControl.Resources>
<DataTemplate DataType="x:Type vm:TypeAViewModel">
<StackPanel>
<local:TypeAUserControl />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="x:Type vm:TypeBViewModel">
<StackPanel>
<local:TypeBUserControl />
</StackPanel>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
В приведенном выше примере я бы увидеть «MyApp.ViewModel.TypeAViewModel» отображается, когда дерево узел TypeAViewModel возвращается CurrentlySelectedTreeViewModel. Я ожидаю увидеть мой TypeAViewModelUserControl.
Я попытался положить один текстовый элемент TextBlock Text = "TESTING"/> в один из моих DataTemplates, чтобы увидеть, была ли проблема связана с моими пользовательскими элементами управления. Тот же результат.
Любые идеи, что я делаю неправильно?
(Кстати, CurrentSelectedTreeViewModel является свойством, которое возвращает выбранный в данный момент узел в моем древовидном представлении. Кажется, что все работает отлично - поскольку я выбираю узлы в дереве, правильное имя типа для узла появляется ContentControl).
Попытка сделать то же самое; моя проблема в том, что у меня не было своих «DataTemplates» в «ContentControl.Resources». Ваш пример был моим решением! :) – mbmcavoy