none
Grid Mehere Elemente gleichzeitig verschieben RRS feed

  • Frage

  • Hallo,

    wenn man Elemente über Grid.Row="1" oder Grid.Column="3" definiert, dann kann es passieren, dass man irgendwo eine Zeile oder Spalte dazwischen einfügen möchte. Leider muss man dann alle folgenden Elemente um eines hoch setzten. Gibt es da eine einfachere Möglichkeit. z.B. die Zeilen und Spalten zu benennen oder irgendwie alle Elemente automatisiert verschieben?

    Dienstag, 27. Mai 2014 10:03

Antworten

  • Hallo,
    wenn die Zeile/Spalte im Designer sichtbar ist, kannst du über diesen neue Elemente einfügen. Wenn das Grid markiert ist, werden die Zeilen-/Spaltengrößen links und rechts vom Grid angezeigt. Wenn du dort drauf zeigst erscheint  ein Minifenster wo ein Pfeil zu sehen ist. Wenn du auf den Pfeil klickst, kannst du neue Zeilen/Spalten davor bzw. dahinter einfügen.

    Der Designer ändert dann alle Row und Column-Angaben selbstständig. Alle neuen Definitionen sind 80px hoch bzw. breit. Getestet mit VS 2013.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert UrielMhezzek Dienstag, 27. Mai 2014 20:25
    Dienstag, 27. Mai 2014 13:10
    Moderator

Alle Antworten

  • Hallo,
    wenn die Zeile/Spalte im Designer sichtbar ist, kannst du über diesen neue Elemente einfügen. Wenn das Grid markiert ist, werden die Zeilen-/Spaltengrößen links und rechts vom Grid angezeigt. Wenn du dort drauf zeigst erscheint  ein Minifenster wo ein Pfeil zu sehen ist. Wenn du auf den Pfeil klickst, kannst du neue Zeilen/Spalten davor bzw. dahinter einfügen.

    Der Designer ändert dann alle Row und Column-Angaben selbstständig. Alle neuen Definitionen sind 80px hoch bzw. breit. Getestet mit VS 2013.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert UrielMhezzek Dienstag, 27. Mai 2014 20:25
    Dienstag, 27. Mai 2014 13:10
    Moderator
  • Hi,

    aus genau diesem Grund versuche ich wann immer es geht (und es geht relativ häufig), das Grid zB für die Eingaben in einem Dialog als mehrere einzeilige Grids in einem StackPanel zu organisieren.

    <StackPanel>
       <StackPanel.Resources>
          <GridLength x:Key="LeftColumnWidth">150</GridLength>
       </StackPanel.Resources>
       <Grid>
          <Grid.ColumnDefinitions>
             <ColumnDefinition Width="{StaticResource ResourceKey=LeftColumnWidth}" />
             <ColumnDefinition />
          </Grid.ColumnDefinitions>
          <TextBlock Text="Vorname:" />
          <TextBox Grid.Column="1" />
       </Grid>
       <Grid>
          <Grid.ColumnDefinitions>
             <ColumnDefinition Width="{StaticResource ResourceKey=LeftColumnWidth}" />
             <ColumnDefinition />
          </Grid.ColumnDefinitions>
          <TextBlock Text="Nachname:" />
          <TextBox Grid.Column="1" />
       </Grid>
    </StackPanel>

    Das funktioniert bei Eingabemasken ganz gut und macht den beschriebenen Fall (oder auch das Vertauschen zweier Zeilen) vergleichsweise einfach.

    Für komplexere Grids kannst du dir natürlich auch so etwas konstruieren,

    <Grid>
       <Grid.Resources>
          <sys:Int32 x:Key="Row1">1</sys:Int32>
          <sys:Int32 x:Key="Row2">2</sys:Int32>
          <sys:Int32 x:Key="Row3">3</sys:Int32>
       </Grid.Resources>
       <Grid.RowDefinitions>
          <RowDefinition />
          <RowDefinition />
          <RowDefinition />
       </Grid.RowDefinitions>
       <TextBlock Grid.Row="{StaticResource Row1}" Text="hello" />
       <TextBlock Grid.Row="{StaticResource Row2}" Text="little" />
       <TextBlock Grid.Row="{StaticResource Row3}" Text="world" />
    </Grid>

    aber ob das wirklich eine Hilfe ist, halte ich für fraglich. Ein Tool, ein pfiffiges Makro oder ähnliches kenne ich leider auch nicht (sonst würd ich mir nicht wie oben behelfen).

    Ich hoffe, es war trotzdem ein wenig hilfreich.

    Gruß
    Jürgen

    Dienstag, 27. Mai 2014 13:14