代码之家  ›  专栏  ›  技术社区  ›  iamkcdavid

根据数据自动调整网格视图列标题的大小

  •  1
  • iamkcdavid  · 技术社区  · 10 年前

    我如何根据网格视图上的数据自动调整每个数据列标题的大小,并使其适合屏幕,而无需滚动条即可查看网格中的剩余数据?这是我的示例代码。。

    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 回复  |  直到 10 年前
        1
  •  1
  •   pushpraj    10 年前

    下面是一个例子,显示了问题中大部分问题的答案

    <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相同的样式

    提到 Sizing Options in the DataGrid Control 有关数据网格大小选项的详细信息

    该示例基于 DataGrid 但似乎您使用的是遥控器,但我确信它将以类似的方式应用于遥控器。我没有遥控器,所以我可能不会举同样的例子。