我的WPF DataGrid
的其中一列中有图像。我需要为它们生成动态工具提示,因此我为ToolTipOpening
事件创建了一个处理程序。但问题是这个事件的发送者是Image类的实例,它没有关于事件发生的行的任何信息,而我需要它来生成工具提示。
我为这个列定义CellContentTemplate
,如此
<DataTemplate x:Key="SomeTemplate" x:Shared="true">
<Image Name="SomeImage"
Style="{StaticResource SomeStyle}"
Width="16"
Height="16"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Stretch="None"
ToolTipOpening="SomeTooltipHandler"/>
</DataTemplate>
如何在我的处理程序中获取行号?
答案 0 :(得分:1)
由于Image是DependencyObject,您可以使用VisualTreeHelper.GetParent
找到它的祖先。所以,例如找到DataGrid:
public static DataGrid FindDataGridAncestor(DependencyObject dependencyObject)
{
DependencyObject target = dependencyObject;
do
{
target = VisualTreeHelper.GetParent(target);
}
while (target != null && !(target is DataGrid));
return target as DataGrid;
}
<强>用法:强>
DataGrid myGrid = FindDataGridAncestor(myImage);