2017-02-15 7 views
0

У меня есть некоторые XAML, как это:Использование управления Height & Grid.RowSpan вместе

<Grid HorizontalAlignment="Center" ShowGridLines="True"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <ListBox Grid.RowSpan="3" ItemsSource="{Binding OverrideEntityList}" Margin="5" Height="200" Width="250" ScrollViewer.VerticalScrollBarVisibility="Auto"/> 
    <ComboBox Grid.Column="1" ItemsSource="{Binding GeometryType}" SelectedIndex="0" Margin="5" SelectionChanged="ComboBox_SelectionChanged"/> 
    <Grid x:Name="AddLineGrid" Grid.Row="1" Grid.Column="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Label Content="Length:" Margin="5"/> 
     <TextBox Grid.Column="1" Text="{Binding OverrideLength}" Width="50" Margin="5"/> 
     <Label Grid.Row="1" Content="Angle:" Margin="5"/> 
     <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding OverrideAngle}" Width="50" Margin="5"/> 
    </Grid> 
    <Grid x:Name="AddArcGrid" Grid.Row="1" Grid.Column="1" Visibility="Collapsed"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Label Content="Diameter:" Margin="5"/> 
     <TextBox Grid.Column="1" Text="{Binding OverrideLength}" Width="50" Margin="5"/> 
     <Label Grid.Row="1" Content="Angle:" Margin="5"/> 
     <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding OverrideAngle}" Width="50" Margin="5"/> 
    </Grid> 
    <Button Grid.Row="2" Grid.Column="1" Content="Add" Command="{Binding AddOverrideEntityCommand}" Margin="5"/> 
</Grid> 

Я пытаюсь получить ListBox, чтобы заполнить весь столбец, но только определенная высота (потому что я не хотите, чтобы он расширялся при добавлении элементов - просто появлялась полоса прокрутки).

Часть XAML-дизайнер в Visual Studio показывает мне, что я бы ожидать: XAML Designer

Но Результирующий вид, когда я строю свою программу, кажется, не уважает Grid.RowSpan в ListBox:

View in program

Есть ли конфликт между установкой высоты в ListBox вместе с Grid.RowSpan? Или есть что-то еще, что мне не хватает?

ответ

1

Есть ли конфликт между установкой высоты в ListBox вместе с Grid.RowSpan? Или есть что-то еще, что мне не хватает?

Список ListView охватывает все 3 строки, но так как он имеет высоту 200 и высота окна больше, чем это, он, естественно, не сможет заполнить весь столбец сверху вниз.

Вы должны установить высоту ListView на ту же высоту, что и окно, чтобы это произошло. Вы можете сделать это сначала с помощью OneTime связывания:

<ListBox Grid.RowSpan="3" ItemsSource="{Binding OverrideEntityList}" Margin="5" Height="{Binding Height, RelativeSource={RelativeSource AncestorType=Window}, Mode=OneTime}" Width="250" ScrollViewer.VerticalScrollBarVisibility="Auto"/> 
+0

Я просто переместил Height = 'свойство к сетке' «200», а не ListBox и что, казалось, решить эту проблему (до сих пор не знаю, почему XAML Designer показывал мне одну вещь, но фактическое представление показывало мне другое). – derekantrican

+0

Perhsps. Высота дизайна окна отличается от фактической высоты во время выполнения. Но вы никогда не должны доверять дизайнеру. Это имеет значение поведение, которое вы испытываете во время выполнения. Дизайнер может быть полностью отключен :) – mm8