Frage

Diese Frage ist das gleiche wie diese anderen Frage unbeantwortet .

Wenn die Expander erweitert wird die äußere Listview wächst Raum für die Expandern Inhalt zu machen, aber wenn die Expander dann die Ansicht kollabiert ist nicht die Listview-Kraft zu ändern.

Reduzierte Code, mit Noten nach:

<!--<StackPanel>-->
<ItemsControl>

  <!-- ParameterGroupView -->
  <Border BorderBrush="Brown" BorderThickness="1" CornerRadius="4" Padding="4">
    <ListView HorizontalContentAlignment="Stretch">
      <Expander Header="Expander A" IsExpanded="False">
        <ListView HorizontalContentAlignment="Stretch">

          <!-- TextView -->
          <TextBlock >Content A</TextBlock>
          <TextBlock >Content B</TextBlock>

        </ListView>
      </Expander>

    </ListView>
  </Border>

</ItemsControl>
<!--</StackPanel>-->

Ich habe die ParameterGroupView in Items oder Stackpanel , weil es tatsächlich viele ist ParameterGroupView Einträge. Swapping zu einem Stackpanel das Verhalten nicht ändern.

Entfernen der Boarder das Verhalten nicht beeinflussen, aber mit hilft es, das Verhalten zu zeigen, mit nur einem einzigen ParameterGroupView .

Es kann viele Expander Abschnitte in der Außen Listview und Expander kann innerhalb der inneren viele Unternehmen haben Listview .

Die äußere Listview und Expander ist ein ersetzen TreeView wurde, dass verwendet, um eine Liste der zusammenklappbaren Knoten haben, aber die TreeView 's den internen Gebrauch von Gittern, bedeutet, dass die Textview Artikel horizonatlly zerquetscht wurden, das gleiche wie wenn Sie Äther = Horizontalcontentalignment "Stretch" Attribute entfernen.

Also, wenn es eine andere Art und Weise zu wickeln / Draht alles up, werde ich auch gerne.

Dies ist ein Problem, weil unsere Textview Blöcke sind groß und es gibt viele Expander s.

Edit: Textview wird als Code datengebunden ist, verwendet und somit dynamisch zusammen. So dass jeder Ersatz für Listview müßte irgendeine Form von Itemssource

War es hilfreich?

Lösung

Fand die Lösung, und es Details, wo in der Frage bereits.

ItemControl akzeptiert eine Itemssource und Auto passt die Größe. So ersetzt die beiden Listview s mit ItemControl s die verschachtelte kollabiert wird.

Aber es gibt kein Scrollen, so das Einwickeln der äußeren ItemControl mit einer Scroll , gibt die vollständige gewünschte Wirkung.

<ScrollViewer
    VerticalScrollBarVisibility="Auto">
    <ItemsControl>
        <!-- ParameterGroupView -->
        <Border
            BorderBrush="Brown"
            BorderThickness="1"
            CornerRadius="4"
            Padding="4"
            Height="Auto">
            <ItemsControl
                HorizontalContentAlignment="Stretch">
                <Expander
                    Header="Expander A"
                    IsExpanded="False">
                    <ItemsControl
                        HorizontalContentAlignment="Stretch">
                        <!-- TextView -->
                        <TextBlock>Content A</TextBlock>
                        <TextBlock>Content B</TextBlock>
                    </ItemsControl>
                </Expander>
            </ItemsControl>
        </Border>
    </ItemsControl>
</ScrollViewer>

Ich teste mit Doppel Expander in der Grenz-und Doppelgrenzabschnitten.

Andere Tipps

Das naheliegendste, was hier zu tun ist, die Expander in einem anderen Container als eine Listenansicht zu setzen:

<Border BorderBrush="Brown" BorderThickness="1" CornerRadius="4" Padding="4">
    <StackPanel>

        <Expander Header="Expander A" IsExpanded="False">
            <ListView HorizontalContentAlignment="Stretch" MinWidth="100">
                <ListBox Name="listb"></ListBox>

                <!-- TextView -->
                <TextBlock >Content A</TextBlock>
                <TextBlock>Content B</TextBlock>

            </ListView>
        </Expander>
    </StackPanel>
</Border>

Der Behälter passt die Größe um Inhalt gut.

Wenn Sie unbedingt in einem Listview haben müssen (was möglich ist), dann weiß ich nicht, einen Weg ein Listview zu bekommen leicht zu skalieren, sobald es (über Einstellung explizite Größen der ganzen Sache gewachsen ist, die plump ist und Nicht nützlich). Wenn das ist der Fall, dann ist es möglich, dass Sie einen steuerbaren Listbox verwenden müssen werden alle offenen Expandern anzuzeigen, oder zeigen den Inhalt in einer anderen Art und Weise (wie in einem Pop-up, vielleicht?), Wenn Sie in der Lage sein, es zu sehen alles auf einem Blick.

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