You could accomplish this by setting 'IsEnabled' to false on the columns headers that you do not want clickable. I've pasted an example that I used as a test. The only other thing I did was change the foreground brush so that the disabled column header appeared in black like the other header.
<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>
The first column is clickable, the second column is not. Hope this helps!
edit: Sample referenced in my comment. This method leaves the header enabled but still doesn't allow it to be clicked:
<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>
And the code-behind for the event:
private void GridViewColumnHeader_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
This basically 'eats' any clicks made on this button. Unfortunately it also stops you from resizing, since you need to click to resize. There may be a way to test the click to see whether it is a 'button' click or a 'resize area' click and only handle the button clicks, but I am not sure of it.