Для WPF TreeView, как я могу использовать тему, одновременно устанавливая TreeView.ItemContainerStyle

#wpf #treeview #treeviewitem

#wpf #просмотр дерева #treeviewitem

Вопрос:

Я использую это в XAML для загрузки дочерних элементов treeview из модели представления, основанной на примере кода Джоша Смита здесь:

 <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
        </Style>
</TreeView.ItemContainerStyle>
  

Это приводит к игнорированию темы, которую я использую для TreeViewItem. Это делает текст выбранного элемента черным, а фон темно-синим, поэтому его трудно читать. Есть ли способ использовать и тему, и приведенный выше код одновременно?

Ответ №1:

Попробуйте установить BasedOn на {StaticResource {x:Type TreeViewItem}} .

Это приведет к использованию стиля по умолчанию для TreeViewItems (который предоставляется темой) в качестве основы для вашего стиля.

Комментарии:

1. Спасибо за ответ. Я не уверен, куда это поместить. Я попробовал это здесь, но он говорит, что TreeViewItem не найден. ‘code'<Просмотр дерева. ItemContainerStyle> <Style TargetType=»{x: Type TreeViewItem}» BasedOn =»{StaticResource {x:Type TreeViewItem}}»> <Свойство Setter=»IsExpanded» Значение =»{Привязка расширена, режим = TwoWay}» /> <Свойство Setter=»IsSelected» Значение =»{Привязка выбрана, Mode=TwoWay}» /> </Стиль> </Просмотр дерева. ItemContainerStyle>’код’

2. На самом деле, это сработало в любом случае, несмотря на ошибку. Спасибо за вашу помощь.

3. Для меня этот код выглядит нормально… Редактировать: О да, просто игнорируйте ошибки.

4. Это не позволит мне повысить ваш ответ, потому что мне нужно больше репутации, извините за это.

Ответ №2:

Просто форматированный код:

 <TreeView.ItemContainerStyle> 
    <Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:TypeTreeViewItem}"> 
        <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 
        <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
    </Style> 
</TreeView.ItemContainerStyle>