c# - 显示 TextBlock 文本的工具提示(具有自定义样式)

标签 c# .net wpf xaml

我遇到了以下问题。我有一个带有 DataGridTemplateColumn 的 DataGrid,我想用弹出窗口显示单元格的文本(因为它可以被修剪)。

这是我的 xaml 代码:

                    <DataGridTemplateColumn>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock 
                                    Text="{Binding Description}" 
                                    TextTrimming="CharacterEllipsis">
                                    <TextBlock.ToolTip>
                                        <ToolTip Style="{StaticResource ToolTipBrowserDescription}" ToolTip="test"/>
                                    </TextBlock.ToolTip>
                                </TextBlock>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

风格:

<Style TargetType="{x:Type ToolTip}" x:Key="ToolTipBrowserDescription">
    <Setter Property="DataContext" Value="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ToolTip}">
                <Border BorderBrush="{StaticResource HT_Background_DarkGrey}" Background="{StaticResource HT_Background_LightGrey3}" BorderThickness="1">
                    <TextBlock Text="{Binding ToolTip}" FontWeight="Bold" TextWrapping="Wrap" Margin="5" MinWidth="50" MaxWidth="{TemplateBinding MaxWidth}"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

tooltip1

但是当我将 ToolTip 属性从“test”设置为“{Binding Description}”时,ToolTip(显示)为空。

有没有人为我提供解决方案。我被困了大约 2 小时..

最佳答案

这应该可以解决问题。

工具提示样式:

<Style x:Key="ToolTipBrowserDescription"
       TargetType="{x:Type ToolTip}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ToolTip}">
                <Border BorderBrush="{StaticResource HT_Background_DarkGrey}" 
                        Background="{StaticResource HT_Background_LightGrey3}"
                        BorderThickness="1">
                    <TextBlock Text="{TemplateBinding Content}"
                               FontWeight="Bold"
                               TextWrapping="Wrap"
                               Margin="5"
                               MinWidth="50"
                               MaxWidth="{TemplateBinding MaxWidth}" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

文本 block :

<TextBlock Text="{Binding Description}">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="ToolTip">
                <Setter.Value>
                    <ToolTip Style="{StaticResource ToolTipBrowserDescription}"
                             Content="{Binding Description}"/>
                </Setter.Value>
            </Setter>
        </Style>
    </TextBlock.Style>
</TextBlock>

您应该将模板绑定(bind)到内容,而不是 ToolTipToolTip

关于c# - 显示 TextBlock 文本的工具提示(具有自定义样式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38184408/

相关文章:

c# - 如何处理在一个平台上同步但在另一个平台上异步的代码

c# - 服务引用未加载 : Schema with target namespace could not be found

c# - 模拟管理系统?

c# - 如何对具有不同架构的数据库执行 LINQ 查询?

.net - 支持 VBA 的电子表格组件

c# Wpf 将枚举绑定(bind)到组合框

c# - 如何使用NEST删除特定的河流?

c# - 即使没有对象为 null,也会出现 NullReferenceException

ItemsControl 上的 WPF MVVM 单选按钮

c# - 在 RichTextBox 中格式化单词