首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DataGridCell ToolTip属性值绑定到DataGridCell值

将DataGridCell ToolTip属性值绑定到DataGridCell值
EN

Stack Overflow用户
提问于 2014-12-11 08:31:47
回答 1查看 12.6K关注 0票数 9

我有DataGrid,其中一个DataGrid列如下所示

代码语言:javascript
复制
<DataGridTextColumn Header="Value" 
        Binding="{Binding Value, Converter={StaticResource BooleanToYesNoConverter}}" 
        x:Name="_col2" 
        IsReadOnly="True"
        CanUserSort="False"
        Width="*">
    <DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="ToolTip" Value="{Binding Value, Converter={StaticResource BooleanToYesNoConverter}}" />
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

问题是我被迫两次使用BooleanToYesNoConverter转换器。这意味着Convert方法的BooleanToYesNoConverter将被调用两次。因此,我想优化我的代码。并希望将ToolTip属性的值直接绑定到单元格的值。

我尝试了使用ElementName-s的方法。但是,我不知道应该在绑定的Path属性中指定什么。

代码语言:javascript
复制
<DataGridTextColumn Header="Value" 
        Binding="{Binding Value, Converter={StaticResource BooleanToYesNoConverter}}" 
        x:Name="_col2" 
        IsReadOnly="True"
        CanUserSort="False"
        Width="*">
    <DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="ToolTip" Value="{Binding ElementName=_col2, Path=???}" />
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

我尝试使用DataGridTemplateColumn而不是DataGridTextColumn,但它也不起作用。

代码语言:javascript
复制
<DataGridTemplateColumn CanUserSort="False"
                        Header="Значение"
                        Width="*">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Value, Converter={StaticResource BooleanToYesNoConverter}}"
                        Name="_textBlock"/>    
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="ToolTip" Value="{Binding RelativeSource ElementName=_textBlock, Path=Text}" />
        </Style>
    </DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>

我怎么才能解决我的任务。有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-11 10:19:13

只需将ToolTip设置为DataGridCell的DataContext,如下所示:

代码语言:javascript
复制
<DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="ToolTip" Value="{Binding}" />
        </Style>
</DataGridTextColumn.CellStyle>

如果您没有得到所需的内容,那么也可以指定转换器:

代码语言:javascript
复制
<DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="ToolTip" Value="{Binding Converter={StaticResource BooleanToYesNoConverter}}" />
        </Style>
</DataGridTextColumn.CellStyle>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27418403

复制
相关文章

相似问题

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