3

WPF の列の 1 つに画像があります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>

ハンドラーで行番号を取得する方法はありますか?

4

1 に答える 1

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);
于 2012-12-11T11:26:14.010 に答える