Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使WPF组合框填充整个列宽_Wpf_Combobox_Styles - Fatal编程技术网

使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