首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

WPF 控件可見性控制:Visibility 屬性與 Hidden/Collapsed 差異詳解

     編輯:程式設計綜合問答

WinForms vs WPF 差異

框架屬性名類型值範圍
WinFormsVisiblebooltrue / false
WPFVisibilityenum (Visibility)Visible / Hidden / Collapsed

WPF 三種可見性狀態

// 可見(預設)
myButton.Visibility = Visibility.Visible;

// 隱藏但佔據佈局空間
myButton.Visibility = Visibility.Hidden;

// 隱藏且不佔據佈局空間(相當於 WinForms Visible=false)
myButton.Visibility = Visibility.Collapsed;

視覺化差異


[Visible]     : ████████████  (顯示,佔空間)
[Hidden]      : ░░░░░░░░░░  (不顯示,保留空間)
[Collapsed]   :             (不顯示,不佔空間,後續元素前移)

常用場景對照

需求推薦值說明
條件顯示/隱藏,保持佈局穩定Hidden避免 UI 跳動
彈出面板、標籤頁切換、動態表單Collapsed空間釋放,自動重排
動畫淡入/淡出Hidden + Opacity配合動畫保留佈局

XAML 綁定範例(MVVM)

<Button Content="提交" 
        Visibility="{Binding IsAdmin, Converter={StaticResource BoolToVisConverter}}" />
// 轉換器
public class BoolToVisibilityConverter : IValueConverter {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
        return (bool)value ? Visibility.Visible : Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
        return (Visibility)value == Visibility.Visible;
    }
}

程式碼後置切換

private void TogglePanel() {
    myPanel.Visibility = myPanel.Visibility == Visibility.Visible 
        ? Visibility.Collapsed 
        : Visibility.Visible;
}

掌握 Hidden 與 Collapsed 的佈局行為差異,是 WPF 介面開發的基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved