用于DataGrid.Cell的WPF IValueConverter工具提示可见性在转换中获取null值

时间:2014-06-19 18:20:25

标签: wpf binding datagrid ivalueconverter

XAML for Converter

   <ToolTip x:Key="toolTipGridCell" DataContext="{Binding Path=PlacementTarget,
         RelativeSource={x:Static RelativeSource.Self}}"

         Visibility="{Binding Path=PlacementTarget, 
         RelativeSource={x:Static RelativeSource.Self}, 
         Converter={StaticResource ContentFitsVisibilityConverter}}">

        <TextBlock FontWeight="Bold" Text="{Binding Path=Content.Text}"/>

    </ToolTip>
 ....
<DataGrid ....>
<DataGrid.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="ToolTip" Value="{StaticResource toolTipGridCell}" />
                    </Style>
                </DataGrid.CellStyle>

我需要隐藏或显示单元格上的工具提示,根据单元格的宽度,该单元格的内容是否完全可见。

当我删除工具提示的可见性部分时,我得到了包含单元格内容的工具提示 - 因此目标似乎是正确的。

但是,如上所述定义了可见性,当我将鼠标悬停在单元格上时,当转换函数被命中时,第一个参数(对象值)为null,而不是显示工具提示的DataGrid.Cell。 / p>

1 个答案:

答案 0 :(得分:1)

在您提供的示例代码中,datacontext和Tooltip控件的可见性都绑定到相同的属性&#34; PlacementTarget&#34;。这导致了NullReferenceException。要解决此问题,请将datacontext和可见性绑定到viewmodel中的相应属性。