ToolTip绑定时的BindingExpression路径错误

时间:2017-03-17 01:43:12

标签: wpf binding tooltip

我在DataGridCell中使用了ToolTip。 在我的项目中,我使用了AvalonDock并创建了3个或4个Window选项卡。 然后,它运行良好,并且工具提示在DataGrid中显示良好,但是当我交换选项卡时出现错误。我认为加载程序...
这是我的.xaml代码的一部分。

        <DataGrid.CellStyle>
            <Style TargetType="DataGridCell" BasedOn="{StaticResource MetroDataGridCell}">
                    <Setter Property="ToolTip" Value="{Binding Path=Content.Text, RelativeSource={RelativeSource Self}}" />
            </Style>
        </DataGrid.CellStyle>

有效。 但是有错误说

  

System.Windows.Data错误:40:BindingExpression路径错误:'object'''ContentPresenter'(Name ='')'上找不到'Text'属性。 BindingExpression:路径= Content.Text; DataItem ='DataGridCell'(Name =''); target元素是'DataGridCell'(Name =''); target属性是'ToolTip'(类型'Object')

我该如何解决?

+加法 我修改了源代码。

<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content}" />

enter image description here

然后,BindingExpression错误消失了。但是在显示ToolTip之后,DataGridCell的内容就像我发布的图片一样消失!奇怪的虫子!

1 个答案:

答案 0 :(得分:0)

我以这种方式制作ToolTip

<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text}"/>

可选择性

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.Header>
                <TextBlock Text="Foo Header"/>
            </DataGridTemplateColumn.Header>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <DataTemplate.Resources>
                        <Style TargetType="{x:Type TextBlock}">
                            <Setter Property="ToolTip">
                                <Setter.Value>
                                    <ToolTip 
                                            Style="{StaticResource ToolTipBrowserDescription}" 
                                            Content="{Binding FooProperty}"
                                            HasDropShadow="True">
                                    </ToolTip>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </DataTemplate.Resources>
                    <TextBlock Text="{Binding FooProperty}" TextTrimming="CharacterEllipsis"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

ToolTipStyle

<Style TargetType="{x:Type ToolTip}" x:Key="ToolTipBrowserDescription">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ToolTip}">
                <Border BorderBrush="#FF424242" Background="#FFEEEEEE" BorderThickness="1">
                    <TextBlock Text="{TemplateBinding Content}" FontWeight="Bold" TextWrapping="Wrap" Margin="5" MinWidth="50" MaxWidth="500"/>
                    <Border.Effect>
                        <DropShadowEffect Opacity="0.65" ShadowDepth="1"/>
                    </Border.Effect>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="ToolTipService.HasDropShadow" Value="True">
                        <Setter Property="Margin" Value="0,0,1,1"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

预览

preview