使WPF组合框填充整个列宽
我在拉伸组合框以填充使WPF组合框填充整个列宽,wpf,combobox,styles,Wpf,Combobox,Styles,我在拉伸组合框以填充GridViewColumn中的整个列宽时遇到问题。调整列的大小时,它也应该调整大小 在下面的示例中,我有一个堆栈面板,里面有一个组合框。这被设置为拉伸,实际上将拉伸以填充堆叠面板的宽度 然后我添加了一个带有一列的ListView,其中包含一个带有组合框的StackPanel。StackPanel和ComboBox都设置为拉伸,但它们没有。我使用背景色来确定StackPanels的大小,并且没有红色,除非我设置宽度或向组合框添加元素,使其需要更大的宽度 我还尝试过使用Hori
GridViewColumn
中的整个列宽时遇到问题。调整列的大小时,它也应该调整大小
在下面的示例中,我有一个堆栈面板
,里面有一个组合框
。这被设置为拉伸,实际上将拉伸以填充堆叠面板的宽度
然后我添加了一个带有一列的ListView
,其中包含一个带有组合框的StackPanel
。StackPanel
和ComboBox
都设置为拉伸,但它们没有。我使用背景色来确定StackPanel
s的大小,并且没有红色,除非我设置宽度或向组合框添加元素,使其需要更大的宽度
我还尝试过使用HorizontalContentAlignment
属性,但没有成功
<StackPanel Height="59" Margin="45,12,38,0" VerticalAlignment="Top" Background="Green">
<ComboBox HorizontalAlignment="Stretch" />
</StackPanel>
<ListView x:Name="MyListView" Margin="0,106,0,0">
<ListView.View>
<GridView>
<GridViewColumn Header="Num" Width="70">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Background="red" Orientation="Horizontal" HorizontalAlignment="Stretch">
<ComboBox HorizontalAlignment="Stretch" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
<ListViewItem></ListViewItem>
</ListView>
尝试设置列表视图项的样式。我还移除了你的StackPanel
<ListView x:Name="MyListView" Margin="0,106,0,0">
<ListView.Resources>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Num" Width="170">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
<ListViewItem></ListViewItem>
</ListView>
谢谢!然而,这是可行的——它给了我一个新问题。好吧,在我在问题中给出的简化示例中,这一切都很好,但我真正的列表更复杂。当添加样式时(周围没有任何StackPanel),调整列的大小非常慢。如果我添加一个属性为Orientation=“Horizontal”的StackPanel,则调整大小是平滑的。当列表中的元素通常大于1000个时,就会出现此问题。知道这是什么吗?不使用您的解决方案,但添加Background=“Transparent”会产生相同的问题。感觉我什么都试过了。。谢谢可能需要补充的是,添加一个水平方向的StackPanel会阻止ComboBox填充整个列……好吧,你已经回答了这个问题,所以我现在结束这个问题。谢谢。请查看我关于列调整大小性能问题的新问题:除非StackPanel中包含某些内容,否则您可能会更幸运地使用边框。请注意,StackPanel可以省略。这个例子简化了我真正的问题——我似乎需要一个周围的StackPanel。因此,我保留了它以供提问。有关详细信息,请参阅我对@Bendway答案的评论。您是版主;您错过了12月26日和3月6日(除非我错过了错误的日志),请使用DockPanel
而不是StackPanel