在共享大小组旁边为网格列提供最小宽度

时间:2016-12-23 14:39:11

标签: c# wpf xaml

我使用基于Grid的{​​{1}}来显示一堆属性。当可用空间太小时,控件呈现如下:

Problem

每个项目的ItemsControl使用带有DataTemplate的{​​{1}}作为标签。我喜欢的是输入框被赋予最小宽度,比如50px,如果需要的话减少标签宽度。当我尝试设置Grid时,该框只会在网格外部呈现 - 就像SharedSizeGroup列始终被赋予更高的优先级。

这是相关的XAML;每个项目的默认模板......

MinWidth

...以及用于生成列表的代码

SharedSizeGroup

1 个答案:

答案 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>