我在我的一个项目中遇到了同样的问题。我找到了一个解决方案,我认为这不是最好的方法,但至少有效。
我正在使用一些数据绑定和单击事件对项目进行排序,因此将列设置为只读不是一种方法。
这是xml中的代码部分:
<ListView Name="ListWievResults" HorizontalAlignment="Left" Height="526" Margin="10,10,0,0" VerticalAlignment="Top" Width="400" ItemsSource="{Binding Results}" SelectedItem="{Binding SelectedResult}" IsSynchronizedWithCurrentItem="True" SelectionChanged="ListWievResults_SelectionChanged" SelectionMode="Single">
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridView.Columns>
<GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Width="200">
<GridViewColumnHeader Content="Parameter" Click="GridViewColumnHeader_Click" PreviewMouseMove="GridViewColumnHeader_PreviewMouseMove"/>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=ID}" Width="100">
<GridViewColumnHeader Content="SAFE ID" Click="GridViewColumnHeader_Click" PreviewMouseMove="GridViewColumnHeader_PreviewMouseMove"/>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=Author}" Width="95">
<GridViewColumnHeader Content="Author" Click="GridViewColumnHeader_Click" PreviewMouseMove="GridViewColumnHeader_PreviewMouseMove"/>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
以及来自 th xaml.cs 文件的相关部分:
private void GridViewColumnHeader_PreviewMouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
e.Handled = true;
}
这不是最漂亮的方式,因为标记仍然存在,表明您可以调整列的大小,但至少它不允许这样做。一个缺点是,如果您想将“PreviewMouseMove”事件用于其他事情,那将不起作用。
我真的希望这会有所帮助。