根据数据自动调整gridview列标题

时间:2014-09-03 06:13:17

标签: wpf xaml gridview datacolumn

如何根据数据自动调整gridview上的每个数据列标题,它应该适合屏幕而不使用滚动条来查看网格中的剩余数据?继承我的示例代码..

的Xaml:

<telerik:GridViewDataColumn Header="First Name" Width="*" DataMemberBinding="{Binding FirstName}" />
                <telerik:GridViewDataColumn Header="Last Name" Width="*" DataMemberBinding="{Binding LastName}" />
                <telerik:GridViewDataColumn Header="Middle Name" Width="*" DataMemberBinding="{Binding MiddleName}"  />
                <telerik:GridViewDataColumn Header="Registration Day" Width="*" DataMemberBinding="{Binding RegistrationDay, StringFormat={}{0:dd/MM/yyyy}}" />
                <telerik:GridViewDynamicHyperlinkColumn Header="Email" Width="*" DataMemberBinding="{Binding Email}" />
                <telerik:GridViewDataColumn Header="Password" Width="*" DataMemberBinding="{Binding Access}" />
希望你能帮助我。谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个示例,显示问题中大多数要点的答案

<DataGrid>
    <DataGrid.Resources>
        <Style TargetType="TextBlock"
               x:Key="trimStyle">
            <Setter Property="TextTrimming"
                    Value="CharacterEllipsis" />
        </Style>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTextColumn Header="Resize to header width"
                            Width="SizeToHeader"
                            Binding="{Binding}"
                            ElementStyle="{StaticResource trimStyle}" />
        <DataGridTextColumn Header="Resize to cell content"
                            Width="SizeToCells"
                            Binding="{Binding}" />
        <DataGridTextColumn Header="Resize to header &amp; cell content"
                            Width="Auto"
                            Binding="{Binding}" />
        <DataGridTextColumn Header="Distribute the remaining space"
                            Width="Auto"
                            Binding="{Binding}"
                            ElementStyle="{StaticResource trimStyle}" />
    </DataGrid.Columns>
    <sys:String>a string which is long</sys:String>
    <sys:String>a string which is long, a really long string</sys:String>
    <sys:String>another string which is long</sys:String>
    <sys:String>another string which is long, a really long string</sys:String>
</DataGrid>

结果

result

正如您所看到的,我们只有很少的列大小调整模式来确定列的宽度。对于长文本的省略号...,我已经为TextBlock定义了一个样式,并启用了TextTrimming选项,并使用与所需列的ElementStyle相同的

有关datagrid大小调整选项的详细信息,请参阅Sizing Options in the DataGrid Control

该示例基于DataGrid但似乎您正在使用teleric控件,但我确信它将以类似的方式应用于teleric控件。我没有teleric控件,所以我可能不会为相同的例子闪现。