WPF DataGrid从最宽的单元格设置列宽

时间:2014-02-18 10:39:50

标签: c# wpf datagrid width

我有使用DataGrid的问题。从最宽的可见单元加载列。但是,如果用户向下滚动,并且出现更宽的单元格,则会调整列的大小。

用户不喜欢这个,然后我搜索取消此行为。一个简单的解决方案是使用最宽的单元格宽度设置列宽。但是我很难意识到这一点。

如果您有其他解决方案来解决我的问题,也会很好。

<Window x:Class="Win"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        SizeToContent="Width">        
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <GroupBox Grid.Row="0" Header="Seach">
            <TextBox TextChanged="TextBoxFilter_TextChanged"/>
        </GroupBox>
        <DataGrid Grid.Row="1" Name="DataGridOperations" AutoGenerateColumns="False" ColumnWidth="auto" CanUserAddRows="False" CanUserDeleteRows="False" AlternatingRowBackground="AntiqueWhite">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Date" IsReadOnly="True" Binding="{Binding Date,Mode=OneTime, StringFormat={}{0:dd/MM/yyyy hh:mm:ss}}"/>
                <DataGridTextColumn Header="Type" IsReadOnly="True" Binding="{Binding Type,Mode=OneTime}"/>
                <DataGridTextColumn Header="Etat" IsReadOnly="True" Binding="{Binding Status,Mode=OneTime}"/>
                <DataGridTextColumn Header="Name" IsReadOnly="True" Binding="{Binding Name,Mode=OneTime}"/>
                <DataGridTextColumn Header="Code" Binding="{Binding CodeProduct,Mode=OneTime}"/>
                <DataGridTextColumn Header="Version" IsReadOnly="True" Binding="{Binding VersionIndus,Mode=OneTime}"/>
            </DataGrid.Columns>
        </DataGrid>    
    </Grid>
</Window>

忽略过滤器模块。他在装载步骤时被禁用。 我使用C#4.0 .NET。

1 个答案:

答案 0 :(得分:0)

如果在XAML中将列宽设置为*,该怎么办:

 Width="*"

并创建一个允许文本换行的celltemplate(可能使用texblock) 这样,列宽保持不变 干杯,G