0


0

タグ付きオブジェクトがどのUIElementに配置されているかを判断する方法は?

私のアプリでは、タグ付きオブジェクトを使用しています。 次に、表面に配置されたオブジェクトだけでなく、オブジェクトが配置されている要素に対しても異なる反応をしたいと思います。 これはどういうわけか可能ですか? 私はそれに関する情報を見つけることができませんでした。

2 Answer


2


HitTestを実行できます。 基本的には、ウィンドウに相対的なポイントを取得し、ビジュアルツリーのどの要素がヒットしているかを確認します。 コードサンプルは手元にありませんが、GoogleでHitTestとWPFを使用すると多くのことがわかります。


1


はい、可能です。 あなたのコードを見せてください。

あなたが探しているのは、おそらくリフレクションです。

「is」演算子を使用して、オブジェクトが特定の型であるかどうかをいつでも確認できることをご存知ですか?

var tag = myDependencyObject.Tag;
if(myDependencyObject is CheckBox)
{
    //...
}
else if(myDependencyObject is TextBox)
{
    //...
}

Tag-Propertyの変更を検出するには、次のようにDependencyPropertyChangedイベントをリッスンします。

DependencyPropertyDescriptor prop = DependencyPropertyDescriptor.FromProperty(
    FrameworkElement.TagProperty,
    typeof(FrameworkElement));

prop.AddValueChanged(aTaggedControl, this.YourEventHandlerMethod);