Столбец сетки с шириной "*" не использует все доступное пространство должным образом [дубликат]

У меня проблема с первым использованием ListView. Мой настраиваемый элемент должен (в настоящее время) иметь 2 строки по 3 столбца, каждая из которых содержит метку (ширина 1-го столбца = "Авто"), текстовое поле (заполнение 2-го столбца (проверено с помощью = " " или width="100") и кнопка в 3-м столбце (width="Auto")

К сожалению, второй столбец не масштабируется для использования полной ширины Listview, но ведет себя как width ="Auto".

Обратите внимание, что изначально я использовал StackPanel в качестве верхнего элемента управления в DataTemplate и заменил его сеткой, просто чтобы проверить, может ли он решить проблему.

Тестирование DataTemplate Grid в тестовом приложении прямо в окне работает должным образом.

                    <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Label Content="Input Paths"/>
                <ListView Grid.Row="1" ItemsSource="{Binding PathListAccess.PathList.PathList}">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto"/>
                                        <ColumnDefinition Width="*"/>
                                        <ColumnDefinition Width="Auto"/>
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                    </Grid.RowDefinitions>
                                    <!--Row 0-->
                                    <Label Grid.Row="0" Grid.Column="0" Content="Input Directory:"/>
                                    <TextBox Grid.Row="0" Grid.Column="1" HorizontalAlignment="Stretch" Text="{Binding InputPath}"/>
                                    <Button Grid.Row="0" Grid.Column="2" Content="..."/>
                                    <!--Row 1-->
                                    <Label Grid.Row="1" Grid.Column="0" Content="Output Directory:"/>
                                    <TextBox Grid.Row="1" Grid.Column="1" HorizontalAlignment="Stretch" Text="{Binding OutputPath}"/>
                                </Grid>
                            </Grid>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </Grid>

1 ответ

Я думаю, что проблема в том, что ListViewзначение по умолчанию для Left.

Попробуйте установить HorizontalContentAlignmentк Stretch

      <ListView Grid.Row="1" ItemsSource="{Binding PathListAccess.PathList.PathList}"
          HorizontalContentAlignment="Stretch">
Другие вопросы по тегам