拥有一组 DataGrid
的最佳/正确方法是什么?列具有成比例的宽度( Width="\*"),
但要使其 最小 宽度至少是其内容的宽度?目前,如果我使用 Width="*"
,那么列保持完全成比例,但内容得到如果列变得太薄,则裁剪。如果我使用 Width="Auto"
,那么列的大小将完全适合其内容,但这会使它们的大小都不同。
我真正想要的是两者的结合,比如 Width="\*"
, MinWidth="Auto"
这样当有额外的宽度时,列将全部间隔到相等的宽度,但是当网格变小时,内容永远不会被裁剪。
可悲的是,MinWidth="Auto"
不存在,所以我想我需要绑定(bind)列的MinWidth
属性,但很难弄清楚我会将它绑定(bind)到什么。
我如何告诉 WPF "MinWidth="
列最宽的内容的宽度?
最佳答案
我知道它有点晚了,但我发现了你的问题并编写了一个纯 XAML 解决方案。
<ColumnDefinition Width="42*" MinWidth="{Binding Path=ActualWidth, ElementName=projectInfoHeader }"/>
ElementName
指向占据大部分空间的控件。当然,这仅适用于宽度有限的元素。例如,如果您为
GroupBox
这样做, 比你只能调整到更大的宽度而永远不会调整到更小的宽度。如果
MinWidth
的值有多个候选项, 你需要给自己写一个 IMultiValueConverter
,它接受一个对象[],将其解析为浮点数,并返回最大值(如果您只自己使用它并且不需要处理转换器的错误使用,它只是 1 个 linq 查询)这种方式还支持动态更改
MinWidth
.
关于WPF - 宽度为 ="*"的 DataGrid 列,但 MinWidth 以适合内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404067/