2016-09-16 2 views
0

Ich habe Probleme mit einer Auto-Spalte nicht Größe, wie ich es wollte. Ich verwende folgenden Code:WPF. Auto-Spalten nicht die richtige Größe mit ColumnSpan

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="auto"/> 
     <ColumnDefinition Width="auto"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="auto"/> 
     <RowDefinition Height="10"/> 
     <RowDefinition Height="auto"/> 
    </Grid.RowDefinitions> 
    <Grid Grid.ColumnSpan="2"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="auto"/> 
      <ColumnDefinition Width="5"/> 
      <ColumnDefinition Width="300"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="User: "/> 
     <TextBox Grid.Row="2" Grid.Column="2" /> 
    </Grid> 
    <Button Grid.Row="2" Grid.Column="1" Content="Search"/> 
</Grid> 

So wie ich diese arbeiten will, ist, dass die zweite Auto Spalte der Breite nur für die Taste benötigt nimmt (so dass es direkt unter dem Gitter ausgerichtet ist), und dass die Die erste automatische Spalte übernimmt die verbleibende Breite, die für den Rest des Rasters benötigt wird.

Die zweite Spalte wird jedoch länger und die Breite wird geteilt, als wäre sie * Spalten. siehe Screenshot unten

link to image as I do not have the right rep to post

Ist das mein Missverständnis, wie Auto-Spalten arbeiten? Wenn ja, was ist der beste Workaround dafür? Bitte beachten Sie, dass dies ein vereinfachter Code ist, da dieser Teil eines Formulars mit mehr als einer Spalte ist. Daher würde ich es lieber vermeiden, meine Objekte in anderen Rastern oder Stackpanels zu stark zu verpacken.

Auch eine Breite auf die Schaltfläche Einstellung der Frage ist auch, wie ich es genau die Größe für die ‚Suche‘ Inhalt

EDIT erforderlich sein wollen: etwas Das Layout ist ich versuche zu erreichen wie this

Antwort

1

Zunächst kann dies nur durch ein Raster erreicht werden. Kein Kindergitter erforderlich. Sie können diesen Code verwenden. Zum besseren Verständnis könnten Sie ein Bild zur Verfügung stellen, was Sie erreichen möchten.

<Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="auto"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="auto"/> 
       <RowDefinition Height="10"/> 
       <RowDefinition Height="auto"/> 
      </Grid.RowDefinitions> 
      <TextBlock Text="User: "/> 
      <TextBox Grid.Column="1" /> 
      <Button Grid.Row="2" Grid.Column="1" Content="Search" HorizontalAlignment="Right" Width="Auto"/> 
     </Grid> 
+0

Ich habe meine Frage mit einem bearbeiteten Screenshot von dem, was ich will, bearbeitet. –

+0

Ich habe meine Antwort bearbeitet, Bitte benutzen Sie diese. –

+0

Bitte benutzen Sie den obigen Code, und zögern Sie nicht zu fragen –

Verwandte Themen