【发布时间】:2014-05-29 00:12:42
【问题描述】:
我已经把自己绕在车轴上好几天了。
我要做的是创建一个UserControl,其中包含TreeView。 TreeView 应该显示有关Show 的信息,而Show 中包含Instructions 的列表,依此类推……
我已尝试以各种方式执行此操作,但无法显示数据。这是我尝试过的一些代码 sn-ps:
<TreeView ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}}, Path=DataContext.Show}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Instructions}">
<TextBlock Text="{Binding Path=ShowName}"/>
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Sounds}">
<TextBlock Text="{Binding Path=Name}"/>
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Nodes}">
<TextBlock Text="{Binding Path=Name}"/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我也试过了……
<DockPanel>
<DockPanel.Resources>
<HierarchicalDataTemplate DataType="{x:Type show:Show}" ItemsSource="{Binding Path=Instructions}">
<TextBlock Text="{Binding Path=ShowName}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type show:Instruction}" ItemsSource="{Binding Path=Sounds}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type show:SoundInstruction}" ItemsSource="{Binding Path=Nodes}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type show:NodeInstruction}">
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
</DockPanel.Resources>
<TreeView ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}}, Path=DataContext.Show}">
</TreeView>
</DockPanel>
但似乎没有任何效果。在我的MainWindow 中,我有这段代码初始化数据上下文:
Show s = new Show("Hamlet");
s.AddInstruction(new Instruction("Inst1"));
s.AddInstruction(new Instruction("Inst2"));
ShowViewModel vm = new ShowViewModel(s);
DataContext = vm;
我们将不胜感激。
杰克
【问题讨论】:
-
输出窗口是否出现绑定错误?
-
来自
System.Data?就像无法在 DataContext 中找到属性 Show 一样?没有
标签: c# wpf treeview hierarchicaldatatemplate