У меня есть ContentControl, который не будет отображать XAML из своего DataTemplate, и я уверен, что проблема, с которой я столкнулась, будет очевидна для тех, у кого лучше WPF-код, чем я. Я заменил «Объект» для моего имени объекта, если это необходимо для конфиденциальности.WPF Content View не отображается DataTemplate
В моей MainWindow.xaml я это:
<ContentControl x:Name="ObjectDetailView"
Margin="20,20,20,20" Grid.Row="2" Grid.Column="1"
DataContext="{Binding SelectedItem, ElementName=ObjectListView}"
Template="{DynamicResource DetailControlTemplate}"
ContentTemplate="{DynamicResource DetailDataTemplate}"/>
Я держу свои шаблоны в отдельных файлах, чтобы сохранить код читаемым. Шаблон находится в файле DataResources.xaml, который успешно используется для ListView. Код для содержания/шаблона в вопросе:
<ControlTemplate x:Key="DetailControlTemplate">
<Border Style="{StaticResource ObjectDetailBorderStyle}">
<ContentPresenter/>
</Border>
</ControlTemplate>
<DataTemplate x:Key="DetailDataTemplate" DataType="{x:Type model:Object}">
<!-- Valid XAML -->
</DataTemplate>
В моем дизайнере (как в VS и Blend,) Граница/фон градиентных дисплеях, но ничего больше. То же самое для текущей программы.
Если я перемещаю <!-- Valid XAML -->
в Шаблон управления, он отображается нормально, но я не считаю, что это кошерный, и я также не считаю, что привязка данных будет работать именно так. Пожалуйста, поправьте меня, если я ошибаюсь.
ObjectListView - это ListView, динамически заполняемый с моей виртуальной машины, и я использую MVVM. Все работает отлично. Я бы предпочел, чтобы этот ContentControl появился только после того, как в представлении списка есть допустимый выделенный объект, но это UX-сахар в данный момент, поэтому моя единственная проблема заключается в том, чтобы этот элемент управления содержимым отображал данные моей модели.
Я также довольно новичок в StackOverflow, поэтому, если я пропустил что-либо или сделал ошибку при публикации этого вопроса, пожалуйста, дайте мне знать. Мне не повезло с поиском этой проблемы в течение последних нескольких часов, так как я не хочу тратить ваше время.
Что произойдет, если вы переместите DataTemplate до ContentTemplate в словарь ресурсов? –
Отсутствие заметного эффекта. – Rhynri
И SelectedItem в ListView определенно является моделью: Object? И это не так? Кстати, вы могли бы скрыть элемент управления содержимым со стилем на нем, который имеет триггер, который устанавливает видимость в Collapsed или Hidden, если Content = {x: Null}, но, как вы говорите, может подождать. –