以编程方式将工具提示添加到DataGrid单元

时间:2018-08-01 12:46:49

标签: c# wpf datagrid tooltip

我采取了不同的方法来将提示信息添加到DataGrid的单元格中。我还在此站点上找到了一些信息,但没有使它起作用。

这是怎么回事,我已经尝试过:

我有一个类似的DataGrid:

DataGrid grid = new DataGrid();
Binding b = new Binding() { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.Default, Source = AnObersableCollection, NotifyOnSourceUpdated = true, Path = new PropertyPath(".") } );

grid.SetBinding(DataGrid.ItemsSourceProperty, b);

我希望每个单元格都有一个工具提示,并将单元格内容作为工具提示内容,以便在工具提示中看到截断的文本。因此,我采用了CellStyles并创建了这样的一个:

Style CellStyle_ToolTip = new Style();
CellStyle_ToolTip.Setters.Add(new Setter(DataGridCell.ToolTipProperty, new ToolTip() { Content = "Yeah!" } ));

这适用于静态ToolTip内容,但是如何实现ToolTip具有显示的单元格内容作为内容?

我发现了

CellStyle_ToolTip.Setters.Add(new Setter(DataGridCell.ToolTipProperty, new ToolTip().SetBinding(ToolTip.ContentProperty, b) ));

不起作用,并产生一个“无法设置表达式。它被标记为” NonShareable”并且已经被使用”-错误​​,因为绑定已经在使用中,所以这很有意义。通过其他都使用xaml的讨论,我得出了这种方法(可能完全是废话),这对我来说不是一个选择。我还找到了以下解决方案,但不知道如何在没有xaml的情况下使用。

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

对不起,如果我可能还没有找到一个现有的解决方案,并且希望获得任何帮助,则为您提供帮助。

谢谢!

PS:除了一个DataGridComboBoxColumn之外,所有列都是DataGridTextColumns。

1 个答案:

答案 0 :(得分:1)

您可以使用CellStyle属性:

Style CellStyle_ToolTip = new Style();
var CellSetter = new Setter(DataGridCell.ToolTipProperty, new Binding() {RelativeSource=new RelativeSource(RelativeSourceMode.Self), Path=new PropertyPath("Content.Text")});

CellStyle_ToolTip.Setters.Add(CellSetter); 

grid.CellStyle = CellStyle_ToolTip;