Frage

Ich bin mit einem Expander in einem Resizer (a Content mit einem resize-Greifer), und es dehnt / zusammenbricht richtig, wenn die Steuerung zunächst kommt. Sobald ich die Größe ändern, wird der Expander nicht richtig kollabieren, wie weiter unten dokumentiert. Ich lief Snoop auf meiner Anwendung, und ich sehe keine Höhen eingestellt auf Expander oder seine Bestandteile.

Wie würde ich mich über Expander zu überzeugen, wieder richtig zu kollabieren? Oder Resizer modifiziert werden, um nicht zu machen Expander traurig, wie gut funktionieren würde.

Expander Dokumentation sagt:

  

"Für einen Expander ordnungsgemäß funktioniert, nicht über eine Höhe auf dem Expander-Steuerelement angeben, wenn die ExpandDirection Eigenschaft auf Up- oder Down. In ähnlicher Weise gibt nicht eine Breite in dem Expander-Steuerelement, wenn die ExpandDirection Eigenschaft nach links gesetzt oder Recht. wenn Sie eine Größe in dem Expander-Steuerelement in Richtung festgelegt, dass der erweiterte Inhalt angezeigt wird, der Bereich, der durch die Größe Parameter definiert ist mit einer Umrandung angezeigt wird. in diesem Bereich wird auch, wenn das Fenster ausgeblendet ist. Um eingestellt, die Größe des erweiterten Fensters eingestellt Größenabmessungen auf dem Inhalt der Expander Steuerung oder Scroll, der den Inhalt einschließt. "

War es hilfreich?

Lösung 2

Ich habe keine Chance zu verspotten diese besondere Ausgabe seitdem hatte, aber ich vor kurzem entdeckt, dass Höhe oder Breite zu Double.NaN Einstellung setzt sie auf die Standardfreigeistigen Verhalten.

Ironischerweise war dies den Code der Resizer Kontrolle aus der Lektüre war ich in erster Linie verwendet wird.

Andere Tipps

beschloß ich, das Problem durch die Resizer in den Expandern bewegen, aber ich habe an anderer Stelle in den Expander Problem laufen, also noch würde wie eine Antwort, wenn jemand es hat.

Dank

Die Beantwortung dieser ein bisschen spät (2+ Jahre), aber, hey, besser spät als nie, nicht wahr?

Wie auch immer, lief ich in genau dieses Problem und konnte es mit einigem Code-behind lösen Spaltenbreite speichern und zurücksetzen.

Ich habe ein 3 columned Gitter, mit Inhalt in der ersten Spalte des Gridsplitter in der zweiten Spalte und der Expander in der dritten Spalte. Es sieht aus wie das, was passiert ist, ist, dass nach dem Gridsplitter der Breite der Spalte bewegt wird, um den Expander enthält, von Auto zu einer festen Größe verändert wird. Dies bewirkt, dass der Expander nicht mehr Zusammenbruch wie erwartet.

Also, habe ich eine private Variable und zwei Event-Handler:

    private GridLength _columnWidth;

    private void Expander_Expanded (object sender, RoutedEventArgs e)
    {
        // restore column fixed size saved in Collapse event
        Column2.Width = _columnWidth;
    }

    private void Expander_Collapsed (object sender, RoutedEventArgs e)
    {
        // save current column width so we can restore when expander is expanded
        _columnWidth = Column2.Width;

        // reset column width to auto so the expander will collapse properly
        Column2.Width = GridLength.Auto;
    }

Wenn der Expander kollabiert I Spalte2 die feste Breite speichern (die von Auto Auto-magisch im Hintergrund irgendwo geändert wurde), dann die Breite auf Auto zurückgesetzt.

Dann, wenn der Expander expandiert, ich die Säule zurück in der festen Breite wieder herzustellen, so dass es auf die gleiche Breite dehnt es war, bevor es zusammenbrach wurde.

Hier ist die XAML Referenz:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition x:Name="Column2" Width="Auto" />
    </Grid.ColumnDefinitions>
    <ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto">
        <!-- some content goes here -->
    </ScrollViewer>
    <GridSplitter HorizontalAlignment="Right" VerticalAlignment="Stretch"
         Grid.Column="1" ResizeBehavior="PreviousAndNext" Width="5"
         Background="Black" />
    <Expander Grid.Column="2" ExpandDirection="Left"
         IsExpanded="True" Style="{StaticResource LeftExpander}"
         Expanded="Expander_Expanded" Collapsed="Expander_Collapsed">
        <Grid>
            <TextBox TextWrapping="Wrap" Height="Auto" Margin="0 5 5 5" />
        </Grid>
    </Expander>
</Grid>

Ich lief in ein ähnliches Problem mit einem Gridsplitter einen Expander in einem Grid verwenden. Das Aufklappen / Zuklappen Verhalten funktioniert gut, bis ich den Splitter bewegen ... Danach wird der Expander nicht kollabieren, es seinen Inhalt nur versteckt.

Ich bin noch auf der Suche für eine Abhilfe ... hast du schließlich einen finden?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top