2013-02-27 66 views
3

我似乎无法将工具提示绑定到DataGridCell的内容,而没有让单元格中的内容消失。换句话说,当我将鼠标悬停在单元格上时,工具提示按预期显示,但单元格内容不再可见(永久性除非我向下滚动列表并备份)。贝娄是WPF我遇到的麻烦:当工具提示显示时DataGridCell内容消失

<DataGrid.CellStyle> 
    <Style TargetType="DataGridCell"> 
     <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Content, Mode=OneWay}"> 
     </Setter> 
    </Style> 
</DataGrid.CellStyle> 

我能做些什么,从消失的工具提示显示时停止DataGridCell的内容?

回答

2

您绑定到Content属性,它可以是很多东西,但主要是它了一定的控制:TextBlock文本,CheckBox为布尔数据等等。此控件已经是其他视觉元素的子元素,因此它们的消失可能是因为它们从单元格中移除并添加到ToolTip。如果是这样的话,那么它就是在你的代码中的某处完成的,我想你必须处理这个问题,但这不是一个好的解决方案。

另外,您可以转换器添加到绑定,将解析Content并提取值,但该解决方案是不那么好了。

更好的方法来处理这个是绑定到实际的来源,而不是它的视觉表示。如果你不自动创建列,那么你可以为每一列定义工具提示样式:

<DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Name}"> 
      <DataGridTextColumn.CellStyle> 
       <Style> 
        <Setter Property="ToolTipService.ToolTip" Value="{Binding Name}" /> 
       </Style> 
      </DataGridTextColumn.CellStyle> 
     </DataGridTextColumn> 
</DataGrid.Columns> 
+0

有没有办法让这个更通用的模板?即我有一个模板,上面有一个关键字“DataGridCellWithToolTip”,它具有以下设置器,并且具有与上面相同的问题 bgura 2014-08-29 19:07:42

+0

@Thatoneguy,好吧,如果你想为此添加一个Style,你可以添加一个[Converter](http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter%28v=vs。 110%29.aspx)绑定到您的绑定,它将从控件提取值并将其作为文本返回。在这里我想不出其他的通用方法。 – icebat 2014-08-29 19:27:50