Запретить пользователю изменять размеры столбцов с помощью WPF ListView - PullRequest
23 голосов
/ 08 октября 2008

Как я могу запретить пользователю изменять размер GridViewColumns с помощью элемента управления ListView?

Ответы [ 4 ]

28 голосов
/ 18 июня 2013

Для тех, кто ищет более быстрый и простой ответ.

Установите IsEnabled на False в ColumnHeaderContainerStyle. Это предотвратит изменение размера пользователем.

Как это:

<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>

Этот ответ может быть не таким элегантным, как другие опубликованные; но в моем случае все, что мне было нужно, это быстрый способ сделать это.

Надеюсь, это кому-нибудь поможет.

20 голосов
/ 11 ноября 2013

Ответ Дарконекта хороший, но может быть предпочтительнее установить IsHitTestVisible в ложь вместо IsEnabled. Это дает преимущество, заключающееся в том, что вы не скрываете заголовки.

<GridView.ColumnHeaderContainerStyle>
    <Style BasedOn="{StaticResource {x:Type GridViewColumnHeader}}" TargetType="{x:Type GridViewColumnHeader}">
        <Setter Property="IsHitTestVisible" Value="False"/>
    </Style>
</GridView.ColumnHeaderContainerStyle>
13 голосов
/ 08 октября 2008

Я нашел решение, и, возможно, оно когда-нибудь кому-нибудь поможет;)

Вы должны переопределить ControlTemplate GridViewColumnHeader (шаблон по умолчанию здесь ) и удалить PART_HeaderGripper из шаблона, чтобы предотвратить изменение размера ваших столбцов.

есть другое решение, которое предлагает подкласс GridViewColumn, описанное здесь . для целей представления я предпочитаю решения только для xaml

0 голосов
/ 10 августа 2010

Мне удалось сделать нечто подобное с инструкциями в этом посте

http://blogs.msdn.com/b/atc_avalon_team/archive/2006/04/11/573037.aspx

Я не смог использовать полное XAML-решение, так как я строил все в своем коде из-за его динамики. Отлично сработало с первой попытки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...