簡體   English   中英

如何檢查UIElement在Silverlight中是否可見?

[英]How to check if a UIElement is visible in Silverlight?

如何檢查給定的UIElement當前是否在UI上可見?

有UIElement.Visibility屬性,但這是由編程人員設置的,以指示該元素應該隱藏或可見。

我已經檢查了元素是否在VisualTree中。

如果頂部還有另一個元素與之重疊,那么所有這些都無濟於事。

WPF有一個屬性UIElement.IsVisible似乎可以完成工作,但是Silverlight中缺少此屬性。

有任何想法嗎?

謝謝

你可以做一些代碼來測試VisiblityHitTestVisible元素的屬性。

編輯:

嘗試執行此處提到的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM