这是怎么回事,我已经尝试过:
我有一个类似的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。
答案 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;