web-dev-qa-db-ja.com

ユーザーがWPFListViewを使用して列のサイズを変更できないようにする

ユーザーがListViewコントロール内のGridView列のサイズを変更できないようにするにはどうすればよいですか?

23

私は解決策を見つけました、そしておそらくそれはいつか他の誰かを助けるでしょう;)

サイズ変更を防ぐために、GridViewColumnHeaderのControlTemplate(デフォルトのテンプレートは ここ )をオーバーライドし、テンプレートからPART_HeaderGripperを削除する必要があります。あなたの列の。

説明されているGridViewColumnのサブクラス化を思い付く別の解決策があります ここ 。表現の目的で、私はxamlのみのソリューションを好みますが

14

より迅速で簡単な答えをお探しの方に。

ColumnHeaderContainerStyleでIsEnabledをFalseに設定します。これにより、ユーザーのサイズ変更ができなくなります。

このような:

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

この回答は、他の投稿ほどエレガントではない可能性があります。しかし、私の場合、必要なのはそれをすばやく行う方法だけでした。

これが誰かを助けることを願っています。

28
Darkonekt

Darkonektの答えは良いですが、IsHitTestVisibleではなくIsEnabledをfalseに設定する方が望ましい場合があります。これには、ヘッダーがグレー表示されないという利点があります。

<GridView.ColumnHeaderContainerStyle>
    <Style BasedOn="{StaticResource {x:Type GridViewColumnHeader}}" TargetType="{x:Type GridViewColumnHeader}">
        <Setter Property="IsHitTestVisible" Value="False"/>
    </Style>
</GridView.ColumnHeaderContainerStyle>
21
InTheZone