2016-04-24 11 views
3

Wenn Sie diesen Code auf der Hauptseite einer neuen UWP-App einfügen (oder sehen Sie sich das 1. Bild an), können Sie sehen, dass das orange Raster mehr Platz benötigt als erforderlich (VerticalAlignment ist nach oben). Damit es funktioniert wie es sein sollte, müssen Sie die Höhe der zweiten Zeile dieses Gitters auf Auto setzen (siehe 2. Bild). Das Problem ist, dass ich der zweiten/letzten Zeile den zusätzlichen Platz geben und nicht über alle Zeilen verteilen möchte.
Die Steuerelemente in der linken Spalte innerhalb ihres eigenen Gitters funktionieren (natürlich, weil es keine rowspan gibt), aber ich kann das nicht tun, weil das Stackpanel in der rechten Spalte innerhalb einer Zeile in der linken Spalte geht .

Das zweite Problem ist, dass, wenn Sie auf das orange/grün/gelbe Leerzeichen klicken, der Fokus immer auf das Textfeld in der ersten Zeile (gelb).UWP Grid RowSpan mit ScroolViewer

UPDATE: Beide Probleme sind ohne den scrollviewer behoben, aber ich brauche es eindeutig.


<Page 
x:Class="App1.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:App1" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d"> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <ScrollViewer Background="DarkGreen" VerticalScrollBarVisibility="Auto"> 
     <Grid Background="DarkOrange" Margin="10" VerticalAlignment="Top"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="Auto" /> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="*" /> 
      </Grid.RowDefinitions> 
      <StackPanel Grid.Row="0" Background="Yellow"> 
       <TextBlock Text="Title" /> 
       <TextBox Margin="20" /> 
      </StackPanel> 
      <Grid Grid.Row="1" Background="DeepPink" VerticalAlignment="Top"> 
       <ListView Margin="10" VerticalAlignment="Top"> 
        <ListView.Items> 
         <TextBlock Text="Item1" /> 
        </ListView.Items> 
       </ListView> 
      </Grid> 
      <StackPanel Grid.Column="1" Grid.RowSpan="2" Background="Blue" VerticalAlignment="Top"> 
       <StackPanel> 
        <TextBlock Text="Title1" /> 
        <GridView Margin="0,10,0,0"> 
         <GridView.ItemsPanel> 
          <ItemsPanelTemplate> 
           <ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="4" /> 
          </ItemsPanelTemplate> 
         </GridView.ItemsPanel> 
         <GridView.Items> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
         </GridView.Items> 
        </GridView> 
       </StackPanel> 
       <StackPanel> 
        <TextBlock Text="Title2" /> 
        <GridView Margin="0,10,0,0"> 
         <GridView.ItemsPanel> 
          <ItemsPanelTemplate> 
           <ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="4" /> 
          </ItemsPanelTemplate> 
         </GridView.ItemsPanel> 
         <GridView.Items> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
          <Rectangle Width="80" Height="80" Fill="White" /> 
         </GridView.Items> 
        </GridView> 
       </StackPanel> 
      </StackPanel> 
     </Grid> 
    </ScrollViewer> 
</Grid> 

rowspan

+0

So mögen Sie es wie das zweite Bild? –

+0

Ich möchte wie 1. Bild aber das orange Raster sollte wie 2. Bild enden. Ich weiß nicht, warum dieser zusätzliche Platz hinzugefügt wird ... für mich ist das ein Fehler in der Berechnung der Messwerte –

Antwort