宽度=“*”的网格列未按预期使用所有可用空间[重复]
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
的默认值为HorizontalContentAlignment
是Left
。
尝试将HorizontalContentAlignment
设置为Stretch
<ListView Grid.Row="1" ItemsSource="Binding PathListAccess.PathList.PathList"
HorizontalContentAlignment="Stretch">
【讨论】:
是的,就是这样。很大的帮助!我会搜索很长时间才能找到这个,因为我只是在寻找 ItemTemplate 级别的问题.. 比你!以上是关于宽度=“*”的网格列未按预期使用所有可用空间[重复]的主要内容,如果未能解决你的问题,请参考以下文章
e.PreventDefault()未按预期触发,表单提交[重复]