如何在DataGrid中获取图像行?

时间:2012-12-11 11:19:34

标签: c# .net wpf

我的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>

如何在我的处理程序中获取行号?

1 个答案:

答案 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);