如何根据内容调整列宽?

How to adjust width of column to content?

我在数据网格中有一列,我正在使用多值转换器设置 textblck 的宽度。但是列的宽度没有修改。我希望宽度列可以根据 texblock 的内容进行调整。

专栏是这样的:

            <DataGridTextColumn Header="Columna2" Binding="{Binding}" Width="AUTO">
                <DataGridTextColumn.ElementStyle>
                    <Style TargetType="{x:Type TextBlock}">
                        <Setter Property="HorizontalAlignment" Value="Left"/>
                        <Setter Property="Background" Value="Orange"/>
                        <Setter Property="Width">
                            <Setter.Value>
                                <MultiBinding Converter="{StaticResource MiMultiValueConverter}">
                                    <Binding Path="UseConverterIsChecked" Source="{StaticResource vm}"/>
                                    <Binding Path="WidthColumn2" Source="{StaticResource vm}"/>
                                </MultiBinding>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </DataGridTextColumn.ElementStyle>
            </DataGridTextColumn>

我知道文本块的大小调整正确,因为我设置了背景以查看文本块的实际大小。

这是原始尺寸:

这是转换器设置文本块值的时间:

如何调整列的大小?

谢谢。

编辑:

如果我按照一些评论中的建议使用水平拉伸,我会得到这样的结果:

编辑:

这是代码 MiMultiValueConverter:

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
    bool miBlUsarConverter = (bool)values[0];
    double miDbAncho = (double)values[1];

    return (miBlUsarConverter) ? miDbAncho : 200;
}

您正在设置 DataGrid 列中包含的元素的宽度,而不是实际的列。调整列大小的正确方法是设置 DataGridTextColumn 本身的宽度 属性:

<DataGridTextColumn Header="Columna2" Binding="{Binding}" Width="1*">

对于您的情况,您需要将其替换为上面的绑定。

有关更多信息,请参阅官方文档:https://docs.microsoft.com/en-us/dotnet/desktop/wpf/controls/sizing-options-in-the-datagrid-control?view=netframeworkdesktop-4.8