C# 如何在UWP应用程序中自定义数据网格

C# 如何在UWP应用程序中自定义数据网格,c#,xaml,datagrid,uwp,C#,Xaml,Datagrid,Uwp,我目前正在实现一个UWP应用程序。该应用程序的实体模型包括用于在数据网格内的同一列中显示图像和文本,并根据某些条件高亮显示网格列几秒钟的设计 据我所知,UWP中没有可用于DataGrid的控制,因此请建议我市场上是否有其他可用的网格,我可以将其用作DataGrid的替代品,或者我们需要定制DataGrid以满足我们的要求?是的,UWP中没有内置DataGrid控制。如果要将数据显示为表格,可以使用ListView和GridView,自定义其ItemTemplate,使其看起来像DataGrid。

我目前正在实现一个UWP应用程序。该应用程序的实体模型包括用于在数据网格内的同一列中显示图像和文本,并根据某些条件高亮显示网格列几秒钟的设计


据我所知,UWP中没有可用于DataGrid的控制,因此请建议我市场上是否有其他可用的网格,我可以将其用作DataGrid的替代品,或者我们需要定制DataGrid以满足我们的要求?

是的,UWP中没有内置DataGrid控制。如果要将数据显示为表格,可以使用
ListView
GridView
,自定义其
ItemTemplate
,使其看起来像
DataGrid
。更多详情请参考


正如@Xavier Eoro提到的,如果您不想自己定制,可以使用第三方软件包。例如,包含可以引用的控件
SyncFusion也包含控制,但它是付费的。

是的,UWP中没有内置的数据网格控制。如果要将数据显示为表格,可以使用
ListView
GridView
,自定义其
ItemTemplate
,使其看起来像
DataGrid
。更多详情请参考

正如@Xavier Eoro提到的,如果您不想自己定制,可以使用第三方软件包。例如,包含可以引用的控件
SyncFusion
也包含控件,但它是付费的。

请参见以下问题

使用Microsoft.Toolkit.Uwp.UI.Controls.DataGrid Res:

经验:

xmlns:controls=“使用:Microsoft.Toolkit.Uwp.UI.controls”
请参见以下问题

使用Microsoft.Toolkit.Uwp.UI.Controls.DataGrid Res:

经验:

xmlns:controls=“使用:Microsoft.Toolkit.Uwp.UI.controls”

我使用SyncFusion SfDataGrid,这是一款令人惊叹的产品,如果您的收入低于100万美元,则可以免费获得社区许可证

我使用XAML和C#代码隐藏来定制我的

    <Page.Resources>
    <Style x:Key="dgHeaderStyle" TargetType="grid:GridHeaderCellControl">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="grid:GridHeaderCellControl">
                    <Border Background="#FFC8C8C8" BorderThickness="0">
                        <TextBlock VerticalAlignment="Center"
                                       FontWeight="Bold"
                                       Foreground="Black"
                                       TextWrapping="Wrap" TextAlignment="Center"
                                       Text="{Binding HeaderText}" SelectionHighlightColor="{x:Null}" FontFamily="Segoe UI" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Page.Resources>

                <grid:SfDataGrid FontSize="14" Grid.Row="0" SelectedIndex="0" HeaderStyle="{StaticResource dgHeaderStyle}" x:Name="dgMain" AutoGenerateColumns="False" CurrentCellBorderBrush="{x:Null}" RowSelectionBrush="#FFC6DBE9" GroupRowSelectionBrush="{x:Null}" BorderBrush="#7F808080" BorderThickness="1"  x:FieldModifier="public" SelectionChanged="dgMain_SelectionChanged" AllowSelectionOnPointerPressed="True" AllowGrouping="False" AllowSorting="False" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" ShowColumnWhenGrouped="False" NavigationMode="Row" Tapped="dgMain_Tapped" FontFamily="Segoe UI" RowHeaderWidth="0" AllowDraggingColumns="False" Foreground="Black" Background="{x:Null}" HorizontalAlignment="Left" RequestedTheme="Default" ShowDetailsViewIndentCell="False" SelectionMode="Single" FrozenColumnCount="1" SelectionUnit="Row" IsReadOnly="True" MinHeight="100" MinWidth="100" RowHoverHighlightingBrush="#FFB1D6F0" SelectionForegroundBrush="Black">
                <grid:SfDataGrid.Columns>
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="Record" Width="80" MappingName="Record" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col01" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col02" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col03" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col04" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col05" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col06" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col07" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col08" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col09" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col10" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col11" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col12" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col13" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col14" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col15" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col16" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col17" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col18" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col19" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col20" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col21" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col22" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col23" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col24" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col25" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col26" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col27" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col28" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col29" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col30" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col31" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col32" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col33" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col34" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col35" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col36" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col37" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col38" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col39" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col40" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col41" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col42" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col43" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col44" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col45" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col46" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col47" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col48" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col49" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col50" />
                </grid:SfDataGrid.Columns>
            </grid:SfDataGrid>
并自动调整行大小以填充内容:

            dgMain.QueryRowHeight += dataGrid_QueryRowHeight;

        private void dataGrid_QueryRowHeight(object sender, QueryRowHeightEventArgs e)
    {
        if (dgMain != null &&
            !dgMain.GridColumnSizer.GetAutoRowHeight(e.RowIndex, gridRowResizingOptions, out autoHeight)) return;

        e.Height = autoHeight;
        e.Handled = true;
    }

我使用的是SyncFusion SfDataGrid,它非常棒,如果你的收入低于100万美元,它可以免费获得社区许可

我使用XAML和C#代码隐藏来定制我的

    <Page.Resources>
    <Style x:Key="dgHeaderStyle" TargetType="grid:GridHeaderCellControl">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="grid:GridHeaderCellControl">
                    <Border Background="#FFC8C8C8" BorderThickness="0">
                        <TextBlock VerticalAlignment="Center"
                                       FontWeight="Bold"
                                       Foreground="Black"
                                       TextWrapping="Wrap" TextAlignment="Center"
                                       Text="{Binding HeaderText}" SelectionHighlightColor="{x:Null}" FontFamily="Segoe UI" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Page.Resources>

                <grid:SfDataGrid FontSize="14" Grid.Row="0" SelectedIndex="0" HeaderStyle="{StaticResource dgHeaderStyle}" x:Name="dgMain" AutoGenerateColumns="False" CurrentCellBorderBrush="{x:Null}" RowSelectionBrush="#FFC6DBE9" GroupRowSelectionBrush="{x:Null}" BorderBrush="#7F808080" BorderThickness="1"  x:FieldModifier="public" SelectionChanged="dgMain_SelectionChanged" AllowSelectionOnPointerPressed="True" AllowGrouping="False" AllowSorting="False" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" ShowColumnWhenGrouped="False" NavigationMode="Row" Tapped="dgMain_Tapped" FontFamily="Segoe UI" RowHeaderWidth="0" AllowDraggingColumns="False" Foreground="Black" Background="{x:Null}" HorizontalAlignment="Left" RequestedTheme="Default" ShowDetailsViewIndentCell="False" SelectionMode="Single" FrozenColumnCount="1" SelectionUnit="Row" IsReadOnly="True" MinHeight="100" MinWidth="100" RowHoverHighlightingBrush="#FFB1D6F0" SelectionForegroundBrush="Black">
                <grid:SfDataGrid.Columns>
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="Record" Width="80" MappingName="Record" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col01" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col02" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col03" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col04" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col05" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col06" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col07" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col08" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col09" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col10" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col11" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col12" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col13" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col14" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col15" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col16" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col17" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col18" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col19" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col20" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col21" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col22" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col23" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col24" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col25" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col26" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col27" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col28" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col29" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col30" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col31" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col32" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col33" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col34" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col35" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col36" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col37" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col38" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col39" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col40" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col41" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col42" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col43" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col44" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col45" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col46" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col47" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col48" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col49" />
                    <grid:GridTextColumn TextAlignment="Center" HeaderText="" Width="300" MappingName="Col50" />
                </grid:SfDataGrid.Columns>
            </grid:SfDataGrid>
并自动调整行大小以填充内容:

            dgMain.QueryRowHeight += dataGrid_QueryRowHeight;

        private void dataGrid_QueryRowHeight(object sender, QueryRowHeightEventArgs e)
    {
        if (dgMain != null &&
            !dgMain.GridColumnSizer.GetAutoRowHeight(e.RowIndex, gridRowResizingOptions, out autoHeight)) return;

        e.Height = autoHeight;
        e.Handled = true;
    }

Telerik UI for UWP包含您可能想要签出的网格控件:请参阅以下问题请参阅以下问题Telerik UI for UWP包含您可能想要签出的网格控件:请参阅以下问题请参阅以下问题