Laden...

Überlappung von GUI Elementen

Erstellt von CSharpNewbie2022 vor 3 Monaten Letzter Beitrag vor 3 Monaten 265 Views
C
CSharpNewbie2022 Themenstarter:in
26 Beiträge seit 2023
vor 3 Monaten
Überlappung von GUI Elementen

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>
A
764 Beiträge seit 2007
vor 3 Monaten

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">
C
CSharpNewbie2022 Themenstarter:in
26 Beiträge seit 2023
vor 3 Monaten

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.

A
764 Beiträge seit 2007
vor 3 Monaten

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

C
CSharpNewbie2022 Themenstarter:in
26 Beiträge seit 2023
vor 3 Monaten

Ok ich komme mit den Popups weiter. Danke