使一组 DataGrid
列具有比例宽度的最佳/正确方法是什么( Width="\*"),
但要使其 minimum 宽度至少为其内容的宽度?目前,如果我使用 Width="*"
,则列保持完全成比例,但是如果列变得太薄,内容会被裁剪 . 如果我使用 Width="Auto"
,那么列的大小完全适合它们的内容,但这会使它们具有不同的大小 .
我想要的实际上是两者的组合,如 Width="\*"
, MinWidth="Auto"
,这样当有额外的宽度时,列将全部空出宽度相等,但是当网格变小时,内容永远不会被裁剪 .
可悲的是, MinWidth="Auto"
并没有't exist, so I guess I need to bind the column'属性,但很难弄明白我将它绑定到什么 .
如何告诉WPF "MinWidth="
列的最宽内容的宽度?
4 回答
我知道它有点晚了,但我找到了你的问题并编写了一个纯XAML解决方案 .
ElementName
指向控制占据了大部分空间 . 当然这只能用于宽度有限的元素 . 例如,如果您为GroupBox
执行此操作,则只能调整为较大的宽度,而不会调整为较小的宽度 .如果你有几个
MinWidth
值的候选者,你需要给自己写一个IMultiValueConverter
,它接受一个object [],将它解析为浮点数,并返回最大值(如果你只使用它自己而且只是1个linq查询)需要处理转换器的不良用法)这种方式还支持动态更改
MinWidth
.在XAML中设置
Width = "Auto"
.然后在代码中:
我也有问题在GridViewColumn内正确调整Grid列的大小 . 我尝试了几件事,但后来我发现了UniformGrid . 这是我的终极解决方案 . 它只是有效 . 我以前不知道...似乎默认情况下它在VS工具箱中不存在(?),因此甚至不知道它存在 .
你可以从here找到更多关于UniformGrid的信息 .
在XAML中为列命名:
然后在代码中设置
MinWidth
属性,如下所示: