wpf - 可見性差異。混亂和可見性。隱藏




wpf-controls visibility (4)

可見性:隱藏的Vs折疊

考慮下面的代碼,它只顯示three Labels並將第二個Label visibility視為Collapsed

 <StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Center">
    <StackPanel.Resources>
        <Style TargetType="Label">
            <Setter Property="Height" Value="30" />
            <Setter Property="Margin" Value="0"/>
            <Setter Property="BorderBrush" Value="Black"/>
            <Setter Property="BorderThickness" Value="1" />
        </Style>
    </StackPanel.Resources>
    <Label Width="50" Content="First"/>
    <Label Width="50" Content="Second" Visibility="Collapsed"/>
    <Label Width="50" Content="Third"/>
</StackPanel>

輸出折疊:

現在將第二個Label visibility更改為Hiddden

<Label Width="50" Content="Second" Visibility="Hidden"/>

輸出隱藏:

就如此容易。

WPF中的Visibility.CollapsedVisibility.Hidden之間有什麼區別?


儘管有點舊線索,對於那些仍在尋找差異的人來說:

除了在Hidden中採取的佈局(空間)而不是在Collapsed中採用,還有另一個區別。

如果我們在'Collapsed'主控件中有自定義控件,那麼下次我們將其設置為Visible時,它將“加載”所有自定義控件。 當窗口啟動時它不會預加載。

至於'隱藏',它會加載所有自定義控件+主控件,當“窗口”開始時,我們將其設置為隱藏。


區別在於Visibility.Hidden隱藏了控件,但保留了其在佈局中佔用的空間。 所以它會呈現空白而不是控件。 Visibilty.Collapsed不呈現控件並且不保留空白。 控制所需的空間是'折疊'的,因此名稱。

來自MSDN的確切文字:

折疊 :不要顯示元素,也不要在佈局中預留空間。

隱藏 :不顯示元素,但為佈局中的元素保留空間。

可見 :顯示元素。

請參閱: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx : http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx


StaticResource將在對象構造上解析。
每當控制需要資源時,DynamicResource將被評估和解決。





wpf wpf-controls visibility