WPF ListView (GridView) 內建不支援欄位最小/最大寬度,使用者可將欄拖曳至寬度為 0 導致消失。
封裝一組附加屬性,監聽欄位調整事件並強制限制範圍。
ListViewLayoutManagerLib 專案。xmlns:listViewMgr="clr-namespace:ListViewLayoutManagerLib;assembly=ListViewLayoutManagerLib"ListView 啟用:listViewMgr:ListViewLayoutManager.Enabled="True"GridViewColumn 設定:listViewMgr:RangeColumn.MinWidth="50"、MaxWidth="200"<ListView listViewMgr:ListViewLayoutManager.Enabled="True">
<ListView.View>
<GridView AllowsColumnReorder="True">
<GridViewColumn listViewMgr:RangeColumn.MinWidth="50"
Header="MinWidth50" Width="150"/>
<GridViewColumn listViewMgr:RangeColumn.MinWidth="100"
listViewMgr:RangeColumn.MaxWidth="200"
Header="Width100-200" Width="150"/>
<GridViewColumn Header="Normal" Width="150"/>
</GridView>
</ListView.View>
</ListView>
此庫內部透過 DependencyPropertyDescriptor 監聽 GridViewColumn.Width 變更,並在超出範圍時校正回邊界值,達到無感知限制效果。