DataGrid列自动宽度

时间:2016-11-30 12:19:51

标签: c# wpf wpfdatagrid

我设置了DataGrid,其中除了一个列之外的所有列都有其内容的大小。因此,我将这些列设置为auto,将另一列设置为*。但DataGrid会忽略它,并且标题为Množ的列中的内容不完全可见。

<DataGrid Name="dataGrid" Margin="1" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" 
          VerticalAlignment="Stretch" HorizontalAlignment="Stretch" MouseDoubleClick="dataGrid_MouseDoubleClick"
          ItemsSource="{Binding RadkyDokladu.radky}" CanUserSortColumns="False" PreviewKeyDown="dataGrid_PreviewKeyDown"
          AutoGenerateColumns="False" IsReadOnly="True" FontSize="12" SelectionMode="Single" >
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="FontSize" Value="12"/>
        </Style>
    </DataGrid.ColumnHeaderStyle>
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="" Binding="{Binding ZASKRTNUTO}" Width="auto" />
        <DataGridTextColumn Header="Náz" Binding="{Binding Artikl_NAME}" MinWidth="10" Width="*"/>
        <DataGridTextColumn Header="Místo" Binding="{Binding Umisteni_NAME}" Width="auto"/>
        <DataGridTextColumn Header="Množ" Binding="{Binding Mnozstvi, StringFormat=F2}" Width="auto">
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="HorizontalAlignment" Value="Right" />
                </Style>
            </DataGridTextColumn.ElementStyle>
        </DataGridTextColumn>
        <DataGridTextColumn Header="MJ" Binding="{Binding Jednotka}"  Width="auto"/>
    </DataGrid.Columns>
</DataGrid>

运行后的图像: image

我的代码有问题吗?

1 个答案:

答案 0 :(得分:0)

这是由DataGrid的大小引起的。通过设置:

<DataGrid Margin="1" HorizontalAlignment="Stretch" ...

您的DataGrid尺寸属于TreeViews父级(窗口)的宽度。您可以尝试激活HorizontalScrollBarVisibility="Visible"以展开DataGrids内容并在DataGrid内滚动。

第二种方法是放弃MarginDataGrid可以根据内容进行扩展。