WPF DataGrid MaxWidth 设置为 100% 可用空间

Posted

技术标签:

【中文标题】WPF DataGrid MaxWidth 设置为 100% 可用空间【英文标题】:WPF DataGrid MaxWidth set to 100% availiable space 【发布时间】:2011-12-16 11:58:01 【问题描述】:

我遇到了无法解决的异常问题。我想使用具有固定列大小的 DataGrid,该列大小将达到父级。结构看起来不像这样:

UserControl 正确地将 ScrollViewer 大小设置为父级,除非它达到 MinWidth 然后出现滚动条。当有人调整窗口大小时,UserControl 上的所有控件都会被拉伸。只有个人是DataGrid。无论我尝试多少,它都不想启用水平滚动,它总是使 UserControl 缩放到它的宽度。这当然可以在我想要阻止的 UserControl 下滚动。

简而言之,我希望 DataGrid 占用 100% 的可用宽度,但不会更多。

    <Window>
        <ScrollViewer>
            <UserControl>
                <Grid>
                    <DataGrid>

                    </DataGrid>
                </Grid>
            </UserControl>
        </ScrollViewer>
    </Window>

我也尝试做类似的事情,但失败了:(

    <Window>
        <ScrollViewer>
            <UserControl>
                <Grid>
                    <ScrollViewer>
                        <DockPanel>
                            <DataGrid>

                            </DataGrid>
                        </DockPanel>
                    </ScrollViewer>
                </Grid>
            </UserControl>
        </ScrollViewer>
    </Window>

还连接到 SizeChanged 并最初将 DataGrid 的 Width 设置为一些小的固定值事件并没有进行测试。可能是因为我操作的是 UserControl 派生代码。

我需要建议。

【问题讨论】:

***.com/questions/5028894/… 【参考方案1】:

完全摆脱 DataGrid 周围的 ScrollViewer,这将导致 DataGrid 不知道其父控件的宽度 - 它告诉 DataGrid 它有无限空间。

只需尝试在第一个示例中放置 DataGrid,并在 DataGrid 上设置 HorizontalAlignment=Stretch。这应该是包含 DataGrid 的 Grid 上的默认设置,但为了确定,也将其设置在那里。还要确保你没有设置宽度属性(MinWidth 应该没问题)。

在你试一试后将你的代码编辑到你的问题中。

【讨论】:

正如您在上面看到的 UserControl 没有 ScrollView。父控件中可能有ScrollView,但我没有任何办法修改父代码(至少合法)。

以上是关于WPF DataGrid MaxWidth 设置为 100% 可用空间的主要内容,如果未能解决你的问题,请参考以下文章

当 SelectionMode 设置为 Cell 时,如何突出显示 WPF DataGrid 中的一行

wpf 通过为DataGrid所绑定的数据源类型的属性设置Attribute改变DataGrid自动生成列的顺序

wpf datagrid 单元格如何默认单击一次点中

设置datagrid行背景颜色WPF - 循环[关闭]

wpf怎样使用DataGrid控件

WPF DataGrid - 以编程方式将单元格设置为编辑模式