我使用基于Grid
的{{1}}来显示一堆属性。当可用空间太小时,控件呈现如下:
每个项目的ItemsControl
使用带有DataTemplate
的{{1}}作为标签。我喜欢的是输入框被赋予最小宽度,比如50px,如果需要的话减少标签宽度。当我尝试设置Grid
时,该框只会在网格外部呈现 - 就像SharedSizeGroup
列始终被赋予更高的优先级。
这是相关的XAML;每个项目的默认模板......
MinWidth
...以及用于生成列表的代码
SharedSizeGroup
答案 0 :(得分:1)
反过来尝试一下。
不是在第二列上设置MinWidth
,而是在第一列上放置MaxWidth
。
使用Converter
public class WidthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double gridWidth = (double)value;
return gridWidth - 50;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
在DataTemplate
<Grid.ColumnDefinitions>
<ColumnDefinition
SharedSizeGroup="Key"
MaxWidth="{Binding ActualWidth,
RelativeSource={RelativeSource AncestorType={x:Type Grid}},
Converter={StaticResource WidthConverter}}"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>