wpf - 显示工具提示时 DataGridCell 内容消失

标签 wpf

如果单元格中的内容不消失,我似乎无法将工具提示绑定(bind)到 DataGridCell 的内容。换句话说,当我将鼠标悬停在单元格上时,工具提示会按预期出现,但单元格内容不再可见(永久可见,除非我向下滚动列表并向上滚动)。波纹管是我遇到问题的 WPF:

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

我该怎么做才能阻止 DataGridCell 的内容在工具提示显示时消失?

最佳答案

您绑定(bind)到 Content 属性,它可以是很多东西,但主要是一些控件:TextBlock 用于文本,CheckBox 用于 bool 数据等。此控件已经是其他可视元素的子项,因此它们的消失可能是因为它们已从单元格中删除并添加到 ToolTip。如果是这种情况,那么我猜它是在您的代码中的某处完成的,您必须处理它,但这不是一个好的解决方案。

或者,您可以向绑定(bind)添加一个转换器来解析 Content 并提取值,但该解决方案也不是很好。

处理此问题的更好方法是绑定(bind)到实际源,而不是它的视觉表示。如果您不自动创建列,则可以为每一列定义工具提示样式:

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

关于wpf - 显示工具提示时 DataGridCell 内容消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15115135/

相关文章:

wpf - 具有GridViewColumn和DataTemplate的WPF ListView

c# - Wpf 触摸事件在 Windows 8.1 中不起作用

wpf - TreeView 项 : How to make selection change occur on Click instead of MouseDown?

c# - Mahapp ShowMessageAsync MvvM

c# - WPF 日历周末着色

wpf - 在 XAML 中绑定(bind)到图像时处理 null

c# - 如何添加不同的列表框项目 WPF

wpf - 具有 MVVM 实现的 WPF 应用程序的不可变数据模型

wpf - 如何判断 WPF 窗口是否关闭?

c# - 如何从 WPF 中的 ListView 选择中在 DataGrid 上添加数量列