写真は千語を伝えることができます。System.Windows.Controls.Primitive.PopupRoot型を取得するにはどうすればよいですか?
私は視覚的な私は、最後の親は型System.Windows.Controls.Pimitives.PopupRootの
で見ツリーしかし、ホエイを登るとき、私は実際にVSはそれがありません文句を言い、その型との比較をしよう有効です。
写真は千語を伝えることができます。System.Windows.Controls.Primitive.PopupRoot型を取得するにはどうすればよいですか?
私は視覚的な私は、最後の親は型System.Windows.Controls.Pimitives.PopupRootの
で見ツリーしかし、ホエイを登るとき、私は実際にVSはそれがありません文句を言い、その型との比較をしよう有効です。
PopupRoot
PresentationFramework
からinternal
あるので、あなたのアセンブリからアクセスすることはできません。タイプ名をGetType().FullName
と比較できますが、PopupRoot
は将来のフレームワークバージョンで変更できる実装の詳細なので、私はそれに依存しません。
PopupRoot
は内部であるため、参照することはできません。ただし、LogicalTreeHelper
を使用すると、Popup
(存在する場合)を見つけることができます。 LogicalTreeHelper
は、論理親がない場合はNULLを返します。したがって、視覚ツリーをウォークする以外に、VisualTreeHelper
を使用する必要があります。
var popupRootFinder = VisualTreeHelper.GetParent((DependencyObject)your_visual_element);
while (popupRootFinder != null)
{
var logicalRoot = LogicalTreeHelper.GetParent(popupRootFinder);
if (logicalRoot is Popup)
{
// popup root found here
break;
}
popupRootFinder = VisualTreeHelper.GetParent(popupRootFinder);
}
すべてが、私はより一般的なソリューションを必要と私に語った:ここ
は、あなたがそれを使用する方法の例です。 –