如何使WPF datagrid中的最后一列占用所有的左侧空间,总是?

标准WPF 4 Datagrid。

让我们说datagrid有200像素宽,2列。我希望这些列总是占用整个空间,这意味着如果用户将第一列的大小调整为50像素,最后一个将为150。

最初,我为第一列设置宽度为100像素,而为最后一个设置宽度(在XAML中)。

我认为问题是删除虚拟的第3列,如下所述:

http://wpf.codeplex.com/Thread/View.aspx?ThreadId=58939

但实际上并没有什么区别 – 但是,当调整列的大小时,我会在右侧获得一些额外的空间 – 使用虚拟列,它是一个虚拟列(默认为白色),没有它,它是空的空格默认)。

问题:如何强制执行约束,无论用户如何调整列大小,

sum(columns width)==datagrid width

编辑

是的,我使用WPF 4。

替代方法

我将其中一个答案标记为解决方案,但实际上它不是WPF设计的解决方案。它只是WPF可以做的最好的,它不是很好 – 首先选择CanUserResize为列意味着真正IsResizeable和此选项当打开与宽度设置为*矛盾时。所以没有一些真正聪明的技巧,你最终得到:

> datagrid,最后一列在表面上可调整大小,但实际上并没有显示,右侧的空间很小(即虚拟列不可调整) – 最后一列:CanUserResize = true,Width = *
> datagrid,最后一列不能被用户调整大小,并且相应地显示,最初没有显示右侧的空格,但是当用户调整datagrid的任何元素时,可以显示最后一列:CanUserResize = false,Width = *

到目前为止,我可以看到WPF数据网格的两个问题:

>误导命名
>功能矛盾

我仍然耳熟能详的解决这个问题。

将数据网格的宽度设置为“自动”。您允许列在网格本身内正确调整大小,但是您将硬线连接到200。

更新:基于@ micas的评论,我可能会误读。如果是这样,请尝试使用左侧列的宽度为100,右侧列为100 *(注意星号)。这将默认右列的宽度为100,但允许其调整大小以填充网格。

http://stackoverflow.com/questions/4389630/how-to-make-the-last-column-in-wpf-datagrid-take-all-the-left-space-always

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何使WPF datagrid中的最后一列占用所有的左侧空间,总是?