Как я могу запретить пользователю изменять размеры GridViewColumns с помощью элемента управления ListView?
Запретить пользователю изменять размеры столбцов с помощью WPF ListView
Ответ 1
я нашел решение и, вероятно, когда-нибудь он поможет кому-то другому;)
вам необходимо переопределить шаблон управления GridViewColumnHeader (шаблон по умолчанию здесь) и удалить PART_HeaderGripper из шаблона в чтобы предотвратить изменение размеров столбцов.
существует другое решение, которое включает подклассификацию GridViewColumn, описанную здесь здесь. для целей представления я предпочитаю только xaml решения, хотя
Ответ 2
Для тех, кто ищет более быстрый и простой ответ.
Установите значение IsEnabled в значение False в столбцеHeaderContainerStyle. Это предотвратит изменение размера пользователя.
Вот так:
<GridView.ColumnHeaderContainerStyle>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="IsEnabled" Value="False"/>
</Style>
</GridView.ColumnHeaderContainerStyle>
Если вы хотите исправить отключенный серый цвет, добавьте триггер свойства IsEnabled и исправьте то, что вам нужно.
<GridView.ColumnHeaderContainerStyle>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="TextElement.Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
</GridView.ColumnHeaderContainerStyle>
Этот ответ может быть не таким элегантным, как другие опубликованные; но в моем случае все, что мне было нужно, это быстрый способ сделать это.
Надеюсь, это поможет кому-то.
Ответ 3
Ответ Darkonekt хорош, однако может быть предпочтительнее установить IsHitTestVisible
на false вместо IsEnabled
. Это имеет преимущество не поглаживать заголовки.
<GridView.ColumnHeaderContainerStyle>
<Style BasedOn="{StaticResource {x:Type GridViewColumnHeader}}" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="IsHitTestVisible" Value="False"/>
</Style>
</GridView.ColumnHeaderContainerStyle>
Ответ 4
Я смог сделать что-то подобное с инструкциями в этом сообщении
http://blogs.msdn.com/b/atc_avalon_team/archive/2006/04/11/573037.aspx
Мне не удалось использовать полное решение XAML, так как я строю все в своем коде позади из-за его динамики. Работала отлично с первой попытки.