我有一个listview我需要修复listview的列宽,以便在运行时用户无法拖动列表并调整其大小.....程序是什么? 我搜索了所有的属性,但没有一个帮助我解决这个pbm .. 这在gridview中是可能的,但是如何在listview中实现....
答案 0 :(得分:14)
最简单的方法是使用ColumnWidthChanging
事件:
private void listView_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
{
e.Cancel = true;
e.NewWidth = listView.Columns[e.ColumnIndex].Width;
}
答案 1 :(得分:1)
使用ObjectListView。这不仅允许单个列固定宽度,而且还具有最小和最大宽度。它完成了捕捉所有案例(包括Ctrl-Numpad- +)的艰苦工作,因此无法规避它们。
答案 2 :(得分:0)
非常感谢我在vb.net中使用它作为
Private Sub ListView1_ColumnWidthChanging(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnWidthChangingEventArgs) Handles ListView1.ColumnWidthChanging
e.Cancel = True
e.NewWidth = ListView1.Columns(e.ColumnIndex).Width
End Sub
答案 3 :(得分:0)
一种实现此目的的方法是将Selector.IsEnabled设置为false。
我将放置一个我正在使用的应用程序中使用的代码,这很容易让您轻松获得它。
ListView代码(着重于GridView的ColumnHeaderContainerStyle属性)-
<ListView Grid.Row="1" BorderBrush="{StaticResource MainForegroundBrush}" BorderThickness="1"
HorizontalContentAlignment="Center" FontSize="11" Width="auto" Height="auto"
ItemsSource="{Binding CurrentPkgs,UpdateSourceTrigger=PropertyChanged}"
Style="{DynamicResource ListViewStyle1}" ItemContainerStyle="{DynamicResource ListViewItemStyle1}">
<ListView.View>
<GridView ScrollViewer.VerticalScrollBarVisibility="Visible" AllowsColumnReorder="False"
ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
<GridViewColumn Header="ManualId" Width="70" DisplayMemberBinding="{Binding Path=ManualId}" />
<GridViewColumn Header="ManualPath" Width="210" DisplayMemberBinding="{Binding Path=ManualPath}" />
<GridViewColumn Header="Revision" Width="60" DisplayMemberBinding="{Binding Path=RevVersion}" />
<GridViewColumn Header="PublishedOn" Width="80" DisplayMemberBinding="{Binding Path=PublishedOn}" />
<GridViewColumn Header="PackageId" Width="70" DisplayMemberBinding="{Binding Path=PackageId}" />
</GridView>
</ListView.View>
</ListView>
对于myHeaderStyle(专注于Selector.IsEnabled属性和IsEnabled触发器)-
<Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="MinWidth" Value="50"/>
<Setter Property="Selector.IsEnabled" Value="False"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Background" Value="{StaticResource MainBackgroundBrush}"/>
<Setter Property="Foreground" Value="{StaticResource MainForegroundBrush}"/>
<Setter Property="BorderBrush" Value="#999"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="#111"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="#ccc"/>
</Trigger>
</Style.Triggers>
</Style>
现在您将无法调整列的大小,它们也将被禁用。为此,只需在属性IsEnabled上添加一个触发器,然后它将按照您希望的方式显示。