代码之家  ›  专栏  ›  技术社区  ›  Strawberryshrub

wpf:single treeviewitem粗体

  •  1
  • Strawberryshrub  · 技术社区  · 8 年前

    我是新来的,不知怎么就被困在这里了。我在谷歌上搜索了很多不同的方法,但都没有成功:—(我希望这里有人有一个想法,可以帮助我:—)

    在网上的一些教程的帮助下,我得到了这个树视图。它就像一个魔咒:-)

    <TreeView>                    
        <TreeViewItem ItemsSource="{Binding Data.Number}">                    
            <TreeViewItem.Header>
                <StackPanel Orientation="Horizontal">
                    <Image Width="15" Margin="5 0 5 0"  Source="image.ico"/>
                    <TextBlock Text="{Binding Data.ID}"/>
                    <TextBlock Text=" [" Foreground="Blue"/>
                    <TextBlock Text="{Binding Data.Number.Count}" Foreground="Blue"/>
                    <TextBlock Text="]" Foreground="Blue"/>
                </StackPanel>
            </TreeViewItem.Header>
            <TreeViewItem.ItemTemplate>
                <DataTemplate>
                    <TreeViewItem Header="{Binding ItemID}">
                        <TreeViewItem ItemsSource="{Binding ItemInfo}">
                            <TreeViewItem.Header>
                                <StackPanel Orientation="Horizontal">
                                    <Image Width="15" Margin="5 0 5 0"  Source="image.ico"/>
                                <TextBlock Text="Items"/>
                                <TextBlock Text=" [" Foreground="Blue"/>
                                    <TextBlock Text="{Binding ItemInfo.Count}" Foreground="Blue"/>
                                    <TextBlock Text="]" Foreground="Blue"/>
                                </StackPanel>
                            </TreeViewItem.Header>
                            <TreeViewItem.ItemTemplate>
                                <DataTemplate>
                                <TextBlock Text="{Binding Value.Number}"/>
                            </DataTemplate>
                            </TreeViewItem.ItemTemplate>
                        </TreeViewItem>
                        <TreeViewItem ItemsSource="{Binding SetInfo}">
                            <TreeViewItem.Header>
                                <StackPanel Orientation="Horizontal">
                                    <Image Width="15" Margin="5 0 5 0"  Source="image.ico"/>
                                    <TextBlock Text="Sets"/>
                                    <TextBlock Text=" [" Foreground="Blue"/>
                                    <TextBlock Text="{Binding SetInfo.Count}" Foreground="Blue"/>
                                    <TextBlock Text="]" Foreground="Blue"/>
                                </StackPanel>
                            </TreeViewItem.Header>
                            <TreeViewItem.ItemTemplate>
                                <DataTemplate>
                                <TextBlock Text="{Binding Value.ID}"/>
                                 </DataTemplate>
                            </TreeViewItem.ItemTemplate>
                        </TreeViewItem>
                        <TreeViewItem ItemsSource="{Binding GroupInfo}">
                            <TreeViewItem.Header>
                                <StackPanel Orientation="Horizontal">
                                    <Image Width="15" Margin="5 0 5 0"  Source="image.ico"/>
                                    <TextBlock Text="Groups"/>
                                    <TextBlock Text=" [" Foreground="Blue"/>
                                    <TextBlock Text="{Binding GroupInfo.Count}" Foreground="Blue"/>
                                    <TextBlock Text="]" Foreground="Blue"/>
                                </StackPanel>
                            </TreeViewItem.Header>
                            <TreeViewItem.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Value.Number}"/>
                                </DataTemplate>
                            </TreeViewItem.ItemTemplate>
                        </TreeViewItem>
                    </TreeViewItem>
                </DataTemplate>
            </TreeViewItem.ItemTemplate>
        </TreeViewItem>                    
    </TreeView>
    

    现在的问题是,我希望选中的项目(用鼠标单击)变为粗体。但仅限于所选项目(不包括以下或以上项目)。项目在哪个级别上无关紧要。

    我试了很多变化,但没有一个起作用。这两个是最好的,但他们总是选择一个洞节点或只是顶部节点,我不能把它分解为一个单一的节点。

    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
            <Setter Property="FontWeight" Value="Normal"/>
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="FontWeight" Value="Bold"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TreeView.ItemContainerStyle>
    

    <TextBlock.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeViewItem}}, FallbackValue=False}" Value="True">
                    <Setter Property="TextBlock.FontWeight" Value="Bold" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   dhilmathy    8 年前

    你能试试这个吗 Style 是吗?

    <TreeView.Resources>
        <Style TargetType="{x:Type TreeViewItem}">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="FontWeight" Value="Bold"/>
                </Trigger>
                <Trigger Property="IsSelected" Value="False">
                    <Setter Property="FontWeight" Value="Normal"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TreeView.Resources>