WPF:获取GroupBox内容以填充可用空间

4
我遇到了一个令人烦恼的问题,与WPF GroupBox有关,希望有人能帮我解决。基本上问题是这样的:我在GroupBox内放置了一个ListView,但无论我做什么,似乎都不能使其填充整个GroupBox。

以下是基本代码:

<GroupBox Grid.Row="2" Header="Field" Visibility="{Binding ElementName=radioUnbound, Path=IsChecked, Converter={StaticResource bool2vis}}" Margin="0" VerticalContentAlignment="Stretch">
        <ListView ItemsSource="{Binding ElementName=nnf1, Path=UnboundFields}" x:Name="listUnbound" SelectionChanged="listSelectionChanged" VerticalAlignment="Stretch" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding name}" Margin="2"/>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </GroupBox>

我尝试将列表放入网格(Grids)、堆栈面板(StackPanels)、停靠面板(DockPanel)等中,但无论我尝试什么,最终都会得到这样的结果:

enter image description here


你尝试在组合框中放置网格了吗?Grid.Row=2 在你的主网格中是如何定义的,是 Auto 还是 *? - Dummy01
@Dummy01:是的,在代码和图片之间读一下我写的内容... 我尝试了我能想到的每种容器,但都没有成功:(第2行是“*”,实际上GroupBox本身可以正确地拉伸,但它的内容却不能... - Master_T
你的代码在我的机器上完美运行。你可能在某个地方设置了ListView的默认样式,并指定了高度吗? - Jens
我在整个解决方案中进行了搜索,没有针对ListView或GroupBox的样式定位... - Master_T
1个回答

7

我在XamlPad中尝试了您的代码,它的效果和预期一样。请确保没有设置ListViewGroupBox外观的全局样式。

您可以通过将以下内容放入GroupBox的父控件的资源部分来清除全局样式:

<Style TargetType="GroupBox" />
<Style TargetType="ListView" />

我不使用全局样式。在Visual Studio设计器中,它似乎也能正常工作,但是当编译并运行时,结果是窗口中显示的那个。 - Master_T
如果在设计师中看起来很正常,那么这强烈表明某些样式来自于XAML文件之外的地方。 - thumbmunkeys
@x0r:我尝试将这些样式放在GroupBox的父级(在这种情况下是Grid)中,但无济于事,仍然是一样的... - Master_T
@x0r:问题解决了,我真是个白痴-_- 我忘记了第二行的网格上实际上有两个列表视图,在屏幕截图中显示的两个单选按钮之间会切换。我正在编辑"Unbound"按钮的那一个,而不是启动表单进行测试时看到的另一个(正确的)。 非常抱歉浪费了你们的时间...尽管如此,我还是会因为你们的支持和快速回应给予回报。 - Master_T
虽然这种方法可能有效,但对于使用某些样式的人来说,这个答案毫无用处。最好知道是哪些属性导致了这种行为,而不是将它们全部删除... - D4rth B4n3
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接