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