我正在尝试使用树视图显示一个类,但没有显示任何内容。我用 Snoop 检查了容器,我看到了 StackPanel,但它是空的,即使项目确实有标题和页面。没有绑定错误,我不知道为什么它不起作用。
public class Project : INotifyPropertyChanged {
public string Title {get;set;}
public ObservableCollection<InfoPage> Pages {get;set;}
...
public class InfoPage : INotifyPropertyChanged {
public string Title {get;set;}
public ObservableCollection<InfoPage> Pages {get;set;}
...
<HierarchicalDataTemplate x:Key="ProjectPageTemplate" ItemsSource="{Binding Pages}">
<TextBlock Text="{Binding Title}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="ProjectTemplate" ItemsSource="{Binding Pages}">
<StackPanel>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Title}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis"/>
</StackPanel>
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate>
<TextBlock Text="{Binding Title}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis"/>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
然后在窗口本身:
public static DependencyProperty ProjectProperty = DependencyProperty.Register("Project", typeof(Project), typeof(WinMain));
public Project Project {
get { return base.GetValue(ProjectProperty) as Project; }
set { base.SetValue(ProjectProperty, value); }
}
<TreeView x:Name="trePages" Grid.Row="2" Grid.Column="0" ItemsSource="{Binding Project,ElementName=root,Converter={StaticResource dbg},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ItemTemplate="{StaticResource ProjectTemplate}"/>