[英]How to check if a UIElement is visible in Silverlight?
如何檢查給定的UIElement當前是否在UI上可見?
有UIElement.Visibility屬性,但這是由編程人員設置的,以指示該元素應該隱藏或可見。
我已經檢查了元素是否在VisualTree中。
如果頂部還有另一個元素與之重疊,那么所有這些都無濟於事。
WPF有一個屬性UIElement.IsVisible似乎可以完成工作,但是Silverlight中缺少此屬性。
有任何想法嗎?
謝謝
你可以做一些代碼來測試Visiblity
和HitTestVisible
元素的屬性。
編輯:
嘗試執行此處提到的Silverlight - Determine if a UIElement is visible on screen
有一種方法可以檢查“渲染可見性”(盡管它無法檢查重疊的元素):
元素確實具有Unloaded
事件。 每當對VisualTree進行更改導致該Element成為當前未渲染的VisualTree分支的一部分時,都會引發此事件。 但幸運的是,您不必偵聽這些事件,因為只有加載的元素在VisualTree中確實具有后代或父級。 借助漂亮的ExtensionMethod
您可以檢查在任何給定時間點是否加載了元素:
public static class FrameworkElementExtensions
{
public static bool IsLoaded(this FrameworkElement element)
{
return element.GetVisualChildren().Any();
//I'm not sure if this alternative is better:
//return System.Windows.Media.VisualTreeHelper.GetParent(element)!= null;
//or
//return element.GetVisualParent() != null;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.