宽度=“*”的网格列未按预期使用所有可用空间[重复]

Posted

技术标签:

【中文标题】宽度=“*”的网格列未按预期使用所有可用空间[重复]【英文标题】:Grid column with width="*" does not use all available space as expected [duplicate] 【发布时间】:2022-01-13 17:10:05 【问题描述】:

我第一次使用 ListView 时遇到问题。我的自定义项目(当前)应该有 2 行 3 列,每列包含一个标签(第一列宽度 =“自动”),一个文本框(填充第二列(用 =“”或宽度 =“100") 和第三列中的按钮 ()

不幸的是,第二列无法缩放以使用完整的 Listview 宽度,但其行为类似于 。

请注意,最初我在 DataTemplate 中使用 StackPanel 作为顶部控件,并将其替换为网格,只是为了检查它是否可以解决问题。

在测试应用程序中直接在窗口中测试 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>

【问题讨论】:

除非你设置 ListView 的 View 属性,否则最好使用更简单的 ListBox 基类。 感谢您的提示。你当然是对的。视图尚未设置,因为它们正在准备中。 【参考方案1】:

我认为问题在于ListView 的默认值为HorizontalContentAlignmentLeft

尝试将HorizontalContentAlignment 设置为Stretch

<ListView Grid.Row="1" ItemsSource="Binding PathListAccess.PathList.PathList"
          HorizontalContentAlignment="Stretch">

【讨论】:

是的,就是这样。很大的帮助!我会搜索很长时间才能找到这个,因为我只是在寻找 ItemTemplate 级别的问题.. 比你!

以上是关于宽度=“*”的网格列未按预期使用所有可用空间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Safari:媒体查询未按预期宽度触发

作为 flexbox 的子元素的 CSS 网格未按预期运行

e.PreventDefault()未按预期触发,表单提交[重复]

【PyQt】网格布局 QGridLayout

jQuery DataTables column.width 选项未按预期工作

Spring Security:antMatcher 的序列未按预期工作 [重复]