首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF:单个TreeViewItem粗体

WPF:单个TreeViewItem粗体
EN

Stack Overflow用户
提问于 2018-07-18 04:55:20
回答 1查看 786关注 0票数 1

我对Xaml很陌生,不知何故我被困在这里了。我在谷歌上搜索了很多不同的方法,但都没有奏效:-(我希望这里有人有一个想法,并能帮助我:-)

在互联网上的一些教程的帮助下,我得到了这个TreeView。它的工作原理是:-)

代码语言:javascript
复制
<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>

现在的问题是,我希望选择的项目(通过鼠标单击)变得粗体。但只有选定的项目(不包括下面或以上的项目)。这个项目在哪个级别并不重要。

我尝试了很多变体,但都没有效果。这两个是最好的,但他们总是选择一个洞节点或只是顶部的节点,我不能把它分解为一个节点。

代码语言:javascript
复制
<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>
代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-18 16:42:51

你能试试这个Style吗?

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51393827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档