![](/img/trans.png)
[英]How to set different dataTemplate to treeViewItems in code behind
[英]wpf - how to use dataTemplate for treeViewItems
以下代码引发异常:
<TreeView
ItemsSource="{Binding TreeRootInstance}"
x:Name="Htree"
ItemTemplate="CellTemplate"
SelectedItemChanged="HTree_OnSelectedItemChanged"
KeyDown="HTree_KeyDown">
<TreeView.Resources>
<DataTemplate x:Key="CellTemplate">
<Border>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<ToggleButton x:Name="Expander"
HorizontalAlignment="Right"
Focusable="False"
Grid.Column="1"
IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource AncestorType={x:Type vw:TreeViewItem}}}"
ClickMode="Press"/>
<TextBlock
Text="{Binding Name}"
Grid.Column="0" />
</Grid>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=HasItems, RelativeSource={RelativeSource AncestorType={x:Type TreeViewItem}}}" Value="False">
<Setter TargetName="Expander" Property="Visibility" Value="Hidden"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<Style TargetType="{x:Type TreeViewItem}" x:Key="aa">
<Setter Property="IsTabStop" Value="True"/>
<Setter Property="TabIndex" Value="0"/>
<Setter Property="IsExpanded" Value="{Binding Path=IsExpanded,Mode=TwoWay}"/>
<Setter Property="ItemsSource" Value="{Binding Children}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<StackPanel>
<Border Name="Bd">
</Border>
<ItemsPresenter x:Name="ItemsHost" />
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="false">
<Setter TargetName="ItemsHost"
Property="Visibility"
Value="Collapsed"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type TreeView}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TreeView}">
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemContainerStyle" Value="{StaticResource aa}" />
</Style>
</TreeView.Resources>
</TreeView>
(我省略了一些代码,但是主要的技巧仍然存在...)该异常是ItemsControl.ItemTemplate上的xaml解析异常。
您能告诉我如何使此代码起作用吗?
谢谢李
ItemTemplate行应显示为:
ItemTemplate="{StaticResource CellTemplate}"
您不能使用纯字符串作为资源定位器,而需要使用StaticResource标记扩展,即ItemTempate="{StaticResource CellTemplate}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.