我正在尝试使用树视图显示一个类,但没有显示任何内容。我用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>
然后在Window本身:
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}"/>
答案 0 :(得分:1)
我怀疑它与项目模板中的嵌套Hiera-data-template有关。
刚刚将你的资源复制到一个空白的项目中并玩弄了一下......这就是对我有用的东西。
<Window.Resources>
<HierarchicalDataTemplate x:Key="ProjectItemTemplate" ItemsSource="{Binding Pages}">
<TextBlock Text="{Binding Title}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis" Foreground="Red"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="ProjectTemplate" ItemsSource="{Binding Pages}" ItemTemplate="{StaticResource ProjectItemTemplate}">
<StackPanel>
<TextBlock Text="{Binding Title}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis"/>
</StackPanel>
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<TreeView x:Name="trePages" ItemsSource="{Binding Projects}" ItemTemplate="{StaticResource ProjectTemplate}" />
</Grid>