You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI3 TreeView控件:如何为树形视图项添加悬停提示

WinUI3 TreeView控件添加悬停提示的方法

下面是几种实用的实现方式,可根据你的场景选择:

方法1:直接为单个TreeViewItem添加ToolTip

适合静态或少量节点的场景,通过ToolTipService.ToolTip附加属性直接绑定提示内容:

<TreeView>
    <TreeViewItem Header="父节点1">
        <TreeViewItem.HeaderTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding}" />
                    <ToolTipService.ToolTip>
                        <ToolTip Content="父节点1的悬停提示" />
                    </ToolTipService.ToolTip>
                </StackPanel>
            </DataTemplate>
        </TreeViewItem.HeaderTemplate>
        <TreeViewItem Header="子节点1-1">
            <ToolTipService.ToolTip>
                <ToolTip Content="子节点1-1的提示内容" />
            </ToolTipService.ToolTip>
        </TreeViewItem>
    </TreeViewItem>
</TreeView>

方法2:数据绑定动态生成提示

如果TreeView绑定了数据源(如ObservableCollection),可在数据模型中新增提示属性,通过模板绑定实现动态提示:

1. 定义数据模型

public class TreeViewNode
{
    public string Header { get; set; }
    public string TooltipText { get; set; }
    public ObservableCollection<TreeViewNode> Children { get; set; } = new();
}

2. XAML中绑定提示

<TreeView ItemsSource="{Binding Nodes}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Children}">
            <TextBlock Text="{Binding Header}">
                <ToolTipService.ToolTip>
                    <ToolTip Content="{Binding TooltipText}" />
                </ToolTipService.ToolTip>
            </TextBlock>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

方法3:自定义样式全局生效

若要让所有TreeViewItem统一应用悬停提示样式,可修改TreeViewItem的默认模板:

<Page.Resources>
    <Style TargetType="TreeViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TreeViewItem">
                    <Grid x:Name="ContentPresenterGrid">
                        <!-- 保留原有TreeViewItem内容容器 -->
                        <ContentPresenter x:Name="ContentPresenter"
                                          Content="{TemplateBinding Header}"
                                          ContentTemplate="{TemplateBinding HeaderTemplate}" />
                        <!-- 绑定提示到Tag属性 -->
                        <ToolTipService.ToolTip>
                            <ToolTip Content="{TemplateBinding Tag}" />
                        </ToolTipService.ToolTip>
                    </Grid>
                    <!-- 保留模板其他原有结构(如展开折叠按钮、选中状态等) -->
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Page.Resources>

<!-- 使用时通过Tag属性设置提示内容 -->
<TreeView>
    <TreeViewItem Header="全局样式节点" Tag="这是全局样式的悬停提示" />
</TreeView>

内容的提问来源于stack exchange,提问作者Apoorva Petkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:15:39