我有一个listview,其中包含gridcolumns的网格视图,我想重新排序除第一列以外的所有列.我怎样才能做到这一点?另外我想保存新列位置.
我的listview代码是:
<Style x:Key="myListViewStyle" targettype="{x:Type ListView}" x:Shared="False"> <Setter Property="BorderBrush" Value="RoyalBlue" /> <Setter Property="Foreground" Value="teal" /> <Setter Property="FontSize" Value="14" /> <Setter Property="Margin" Value="20,60,20,50" /> <Setter Property="BorderThickness" Value="4,4,4" /> <Setter Property="ListView.View"> <Setter.Value> <GridView AllowsColumnReorder="True" > <GridView.Columns> <GridViewColumn Header="A/A" Width="30" displayMemberBinding="{Binding AA}"></GridViewColumn> <GridViewColumn Header="Price" Width="350" displayMemberBinding="{Binding Price}" > </GridViewColumn> <GridViewColumn Header="Shop" Width="200" displayMemberBinding="{Binding Shop}" > </GridViewColumn> </GridView.Columns> </GridView> </Setter.Value> </Setter> </Style>
我也用这样的代码创建listview:
ListView l1 = new ListView(); l1.Style = Resources["myListViewStyle"] as Style;
解决方法
如果它只是你想要kepp的第一列,试试这个:
XAML:
<GridViewColumnHeader x:Name="FirstColumn" MouseMove="PreventDrag">
代码背后:
public MyWindow() { InitializeComponent(); (MyListview.View as GridView).Columns.CollectionChanged += ColumnsReordered; } private void PreventDrag(object sender,MouseEventArgs e) { if (e.LeftButton == MouseButtonState.pressed) e.Handled = true; } private void ColumnsReordered(object sender,NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Move) { var columns = sender as GridViewColumnCollection; if (columns != null) dispatcher.BeginInvoke((Action)(() => columns.Move(columns.IndexOf(FirstColumn.Column),0))); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。