27 Stimmen

Benutzer daran hindern, die Größe von Spalten mit WPF ListView zu ändern

Wie kann ich verhindern, dass ein Benutzer die Größe GridViewColumns mit einem ListView-Steuerelement ändern?

36voto

Jonathan Alfaro Punkte 3437

Für diejenigen, die eine schnellere und einfachere Antwort suchen.

Setzen Sie IsEnabled im ColumnHeaderContainerStyle auf False. Dadurch wird der Benutzer an der Größenänderung gehindert.

Zum Beispiel so:

<GridView.ColumnHeaderContainerStyle>
  <Style TargetType="{x:Type GridViewColumnHeader}">
       <Setter Property="IsEnabled" Value="False"/>
  </Style>
</GridView.ColumnHeaderContainerStyle>

Wenn Sie die deaktivierte ausgegraute Farbe beheben möchten, fügen Sie einen Auslöser für die Eigenschaft IsEnabled hinzu und beheben Sie, was Sie brauchen.

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

Diese Antwort ist vielleicht nicht so elegant wie die der anderen, aber in meinem Fall brauchte ich nur eine schnelle Lösung.

Ich hoffe, das hilft jemandem.

32voto

InTheZone Punkte 409

Die Antwort von Darkonekt ist gut, aber es könnte besser sein, die IsHitTestVisible auf false anstelle von IsEnabled . Dies hat den Vorteil, dass die Überschriften nicht ausgegraut werden.

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

15voto

Joachim Kerschbaumer Punkte 9485

Ich habe eine Lösung gefunden, und vielleicht hilft sie ja auch mal jemand anderem ;)

müssen Sie das ControlTemplate des GridViewColumnHeader überschreiben (die Standardvorlage ist ici ) und entfernen Sie die PART_HeaderGripper aus der Vorlage, um eine Größenänderung Ihrer Spalten zu verhindern.

gibt es eine weitere Lösung, die mit der Unterklassifizierung von GridViewColumn beschrieben wird ici . für Darstellungszwecke bevorzuge ich jedoch reine Xaml-Lösungen

0voto

mca Punkte 438

Eine reibungslose Lösung:

<GridViewColumn ...>
    <GridViewColumn.HeaderContainerStyle>
        <Style TargetType="{x:Type FrameworkElement}">
            <Setter Property="IsHitTestVisible" Value="False"/>
        </Style>
    </GridViewColumn.HeaderContainerStyle>
</GridViewColumn>

-2voto

jmlumpkin Punkte 922

Ich konnte etwas Ähnliches mit den Anweisungen in diesem Beitrag machen

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

Ich war nicht in der Lage, eine vollständige XAML-Lösung zu verwenden, da ich aufgrund der Dynamik alles in meinem Code nachgebaut habe. Funktionierte großartig auf den ersten Versuch.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X