如何根据内容调整列宽?
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
我在数据网格中有一列,我正在使用多值转换器设置 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