Hallo,
ich möchte ein Grid aufbauen mit mehreren Zellen. In der obersten Zelle sollen Elemente derartig angeordnet sein, dass die GridZelle eine Breite und eine Spalte hat. Beim Expandieren des Expanders aus Zeile und Spale 0 soll die Breite der Zelle sich nicht ändern. Also der Expander soll sich darüber hinweg öffnen.
Der Code unten sorgt stets dafür, dass sich beim expandieren die Zelle mit ändert.
Hat da einer eine Idee, wie man das lösen kann?
<Grid Grid.ZIndex="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Rectangle Fill="LightGray" Width="200" Height="100" Grid.ZIndex="1" />
<Ellipse Fill="LightBlue" Width="100" Height="100" Grid.ZIndex="1"/>
<Expander HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="myExpander" Grid.ZIndex="0" ExpandDirection="Right">
<Expander.Header>
<TextBlock Text="Expander" Background="LightGreen"/>
</Expander.Header>
<TextBlock Text="Expander-Inhalt" Background="LightYellow" Width="600" Height="300"/>
</Expander>
</Grid>
Hallo CSharpNewbie2022
Stell doch den ZIndex vom Expander testweise mal auf 1.
Gruss
Alf
Edit:
Oder so:
<Rectangle Fill="LightGray" Width="200" Height="100" Grid.ZIndex="2" />
<Ellipse Fill="LightBlue" Width="100" Height="100" Grid.ZIndex="3"/>
<Expander HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="myExpander" Grid.ZIndex="4" ExpandDirection="Right">
Hi,ich habe das Probiert. Ja der Expander überdeckt das Rechteck, aber die erste Spalte des Grids wird bei der Expansion des Expanders einfach breiter.
Eine ComboBox verhält sich beispielsweise nicht so. Sie hebt sich über das Grid hinweg. Da wäre meine Frage, ob ich das auch für einen Expander einstellen kann oder allgemein für UI Elemente.
Okay, ich verstehe das Problem.
Die Width von der ersten Column ist auf Auto gesetzt. Durch das aufklappen des Expanders wird die Column breiter.
Um das zu verhindern, kannst du die Column-Width fest auf 200 setzten.
Was mit dem Expander nicht geht, ist dass der Expander die Column 'verlässt'. Dafür müsstest du dann z.B. ein Popup verwenden.
Du könntest das gewünschte Verhalten evt. auch mit Grid.ColumnSpan="3" erreichen.
Gruss
Alf
Ok ich komme mit den Popups weiter. Danke