c# - 如何获取DataGrid中的图像行?

标签 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>

关于如何在我的处理程序中获取行号的任何想法?

最佳答案

由于 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);

关于c# - 如何获取DataGrid中的图像行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13819236/

相关文章:

c# - Entity Framework 4 部分 SaveChanges

c# - 鼠标捕获失败?

.net - .NET 3.5 安装程序中是否包含 .NET 2.0?

WPF,如何确定MediaElement何时完成播放电影?

c# - 如何从 RichTextBox 控件的撤消堆栈中删除操作?

c# - 将 UTF-16 字节数组编码为字符串字符 C# .NET

c# - 序列化/反序列化 System.RuntimeType

c# - 使用泛型装箱和拆箱

.net - Windows Phone 7 应用程序与 Windows 8 操作系统的兼容性

wpf - DataGrid 行虚拟化显示问题