[WPF疑難] 如何限定ListView列寬度
[WPF疑難] 如何限定ListView列寬度
周銀輝
今天遇到的一個Defect是:應該限定List View中列最小寬度以避免用戶將列寬度拖拽為0而導致列消失。WPF的List View沒有內置該機制,但我們可以通過監聽用戶拖拽操作來跟蹤列寬並進一步限定用戶拖拽,我已經搞定了該問題,請參見附件中的DEMO。
Demo中的“ListViewLayoutManagerLib”項目已經該操作封裝,如何使用該封裝,請參考下面的說明(或GridViewCodeDemo.Window1.xaml)
1,將ListViewLayoutManagerLib引入到項目中,名引入名字空間:xmlns:listViewMgr="clr-namespace:ListViewLayoutManagerLib;assembly=ListViewLayoutManagerLib"
2,在需要限定操作的ListView控件上啟用ListViewManager:listViewMgr:ListViewLayoutManager.Enabled="True"
3,在需要限定的列上制定限定值 listViewMgr:RangeColumn.MinWidth="50"
<ListView listViewMgr:ListViewLayoutManager.Enabled="True"
<ListView.View >
<GridView AllowsColumnReorder="true">
<GridViewColumn
listViewMgr:RangeColumn.MinWidth="50"
Header="MinWidth100"
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>
Demo下載
[WPF疑難] 如何限定ListView列寬度