WPF TreeView不显示箭头
问题描述:
我有一个奇怪的问题,我不知道它来自哪里。WPF TreeView不显示箭头
我将WPF中的TreeView绑定到对象结构。在开始时,TreeView是完全空的,然后我创建一个空的子项(来自用户操作)的根,然后添加子项(也来自用户操作)。
由于某些原因,我不明白,当我添加根的孩子(父母在我的例子中),箭头不会被添加到根元素。父母在那里,因为当我双击根目录时,它会显示父母,但不显示箭头。
与此同时,父母有“孩子”,对于那些没有问题,箭头显示,一切都很好。
下面是我用于显示的TreeView(简化)XAML:
<Grid>
<Grid.Resources>
<DataTemplate x:Key="ChildTemplate"
DataType="dom:Child">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Child: " />
<TextBlock Text="{Binding Date}" />
</StackPanel>
</DataTemplate>
<HierarchicalDataTemplate x:Key="ParentTemplate"
ItemsSource="{Binding Path=Children}"
ItemTemplate="{StaticResource ChildTemplate}"
DataType="dom:Parent">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Parent: " />
<TextBlock Text="{Binding Point, StringFormat='point: {0:N2}'}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="RootTemplate"
ItemsSource="{Binding Path=Parents}"
ItemTemplate="{StaticResource ParentTemplate}"
DataType="vm:RootViewModel">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Root: " />
<TextBlock Text="{Binding Name}" Margin="5 0" />
</StackPanel>
</HierarchicalDataTemplate>
</Grid.Resources>
<TreeView ItemsSource="{Binding Roots}" ItemTemplate="{StaticResource RootTemplate}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource MetroTreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</Grid>
在视图模型而言,没有什么特别的。 ViewModel有一组根元素(称为Roots,它绑定到ItemSource)。而这个Roots类有一个名为Parent的集合,它有一个叫做Children的Child的集合。父母实施INotifyPropertyChanged,通知我何时为Root添加一个孩子,同样的事情。
你能添加一些截图吗? – Noctis
尝试设置'HierarchicalDataTemplate'上的'HierarchicalDataTemplate.DataType'属性。 – Sheridan
添加了截屏,通过设置DataType进行测试,不会更改结果。 – Gimly