首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WPF 自定義 Panel 完美處理 Resize 行為:項目間距、自動隱藏、自適應填充

     編輯:關於.NET

WPF 內建 Panel 的不足

WPF 內建 Panel 功能基礎,常見場景支持不佳:

  1. 項目間有 Margin,但首/尾項需特殊處理不需要 Margin。
  2. Resize 時項目遮擋或部分可見,期望不完整顯示的項目自動隱藏。
  3. 運行時調整項目順序困難 (針對 Panel 而非 ItemsControl)。
  4. 項目大小隨 Panel 大小自動調節。

擴展 StackPanel:核心屬性

基於 StackPanel 行為,擴展以下屬性:

  • ItemMargin:控制項目間距
  • Orientation:放置方向
  • ItemExtraWidth/Height:Panel 寬裕時項目額外獲得的最大寬/高
  • LastVisualChildFill:最後項目是否填充剩餘空間
  • IsParticalItemHidden:剩餘空間不足完整顯示當前項目時隱藏
  • ArrangeManager.ArrangeIndex:控制渲染順序
  • Resizers:控制 Resize 時行為優先級

Resize 行為演示 (圖解)

圖1 最大狀態 圖 1. Resize 最大狀態

圖2 縮小 ItemMargin 圖 2. 縮小 ItemMargin

圖3 縮小項目附加寬度 圖 3. 縮小項目附加寬度

圖4 隱藏不完整項目 圖 4. 隱藏不完全可見對象

Resizers 集合控制行為順序

<r:ResizerCollection>
  <r:ExtraLengthResizer IsEnabled="True"/>
  <r:ItemMarginResizer IsEnabled="True"/>
</r:ResizerCollection>

含義明確:可控制各 Resize 行為啟用與順序。上例先調整項目大小,再調整間距。設計尚嫌不夠優美,拋磚引玉。

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