Вы можете сделать это, установив для IsEnabled значение false в заголовках столбцов, которые вы не хотите нажимать. Я вставил пример, который я использовал в качестве теста. Единственное, что я сделал, это изменил кисть переднего плана, чтобы заголовок отключенного столбца отображался черным, как и другой заголовок.
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Width="120">
<GridViewColumnHeader IsEnabled="True" Content="Col A" Foreground="Black"/>
</GridViewColumn>
<GridViewColumn Width="120">
<GridViewColumnHeader IsEnabled="False" Content="Col B" Foreground="Black"/>
</GridViewColumn>
</GridView>
</ListView.View>
<ListViewItem>1</ListViewItem>
<ListViewItem>4</ListViewItem>
<ListViewItem>2</ListViewItem>
<ListViewItem>3</ListViewItem>
</ListView>
Первый столбец кликабелен, второй - нет. Надеюсь, это поможет!
edit: образец, указанный в моем комментарии. Этот метод оставляет заголовок включенным, но по-прежнему не позволяет щелкать по нему:
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Width="120">
<GridViewColumnHeader Content="Col A"/>
</GridViewColumn>
<GridViewColumn Width="120">
<GridViewColumnHeader Content="Col B" PreviewMouseDown="GridViewColumnHeader_PreviewMouseDown"/>
</GridViewColumn>
</GridView>
</ListView.View>
<ListViewItem>1</ListViewItem>
<ListViewItem>4</ListViewItem>
<ListViewItem>2</ListViewItem>
<ListViewItem>3</ListViewItem>
И код для события:
private void GridViewColumnHeader_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
Это в основном «съедает» любые клики, сделанные по этой кнопке. К сожалению, это также мешает вам изменить размер, так как вам нужно нажать, чтобы изменить размер. Может быть способ проверить щелчок, чтобы увидеть, является ли он нажатием кнопки или изменением размера области и обрабатывать только нажатия кнопки, но я не уверен в этом.