繁体   English   中英

wpf-如何将dataTemplate用于treeViewItems

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM