我正在手动创建我的节点(TreeViewItems),我的意思是代码背后。我这样做是因为我在扩展时根据需要填充子项目,我必须添加一个虚拟节点。这就是我为什么要手动添加项目的原因。
现在,最重要的是当我创建TreeViewItem时不显示DataTemplate并显示默认值。输出窗口没有任何说明。
DataTemplate dt1 = this.Resources["exerciseSetTemplate"] as DataTemplate;
foreach (var qs in qss)
{
TreeViewItem tvi = new TreeViewItem();
tvi.Header = qs.SetName;
tvi.Tag = qs;
tvi.ItemTemplate = dt1;
tvi.Items.Add(yourDummyNode);
treeView1.Items.Add(tvi);
}
这是我的XAML代码:
<UserControl.Resources>
<DataTemplate x:Key="questionSetTemplate">
<StackPanel Orientation="Horizontal" Height="20" Margin="2,0,2,0">
<Image Width="16" Height="16" Source="{StaticResource FolderImage}" Margin="0,0,5,0" />
<TextBlock Text="{Binding SetName}" />
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid>
<TreeView x:Name="treeView1" TreeViewItem.Expanded="treeView1_Expanded_1"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
</TreeView>
</Grid>
如何显示DataTemplate?
答案 0 :(得分:2)
我认为最好的选择是不将对象直接添加到TreeView
Items
属性(因为这将忽略DataTemplates)并创建Collection
以将这些项添加到并绑定那个TreeView
,然后您可以删除x:Key
的{{1}}属性并使用DataTemplate
,这会将模板应用于集合中该类型的任何对象到你的DataType
。
示例:
TreeView
代码:
<UserControl x:Class="WpfApplication8.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfApplication8"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" Name="UI">
<UserControl.Resources>
<DataTemplate DataType="{x:Type local:MyObject}">
<StackPanel Orientation="Horizontal" Height="20" Margin="2,0,2,0">
<!--<Image Width="16" Height="16" Source="{StaticResource FolderImage}" Margin="0,0,5,0" />-->
<TextBlock Text="{Binding SetName}" Foreground="Red"/>
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid DataContext="{Binding ElementName=UI}">
<TreeView x:Name="treeView1" ItemsSource="{Binding TreeItems}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" />
</Grid>
</UserControl>
答案 1 :(得分:0)
您忘记将树ItemsTemplate
设置为DataTemplate