UWP 使用Telerik Grid控件

还是老规矩,看一下最终效果。

数据是从SQLite中读取,然后绑定到DataGrid中显示的。

先看一下XAML

<grid:RadDataGrid Grid.Row="1" x:Name="radDataGrid"
                          Background="Transparent"
                          BorderThickness="1" GridLinesThickness="1"
                          UserEditMode="Inline" UserSortMode="Multiple"
                          SelectionUnit="Row" CanUserChooseColumns="True"
                          AutoGenerateColumns="False"
                          IsRightTapEnabled="True" RightTapped="radDataGrid_RightTapped"
                          IsHoldingEnabled="True" Holding="radDataGrid_Holding"
                          CurrentItemChanged="radDataGrid_CurrentItemChanged"
                          CurrentItemChanging="radDataGrid_CurrentItemChanging">

            <grid:RadDataGrid.Columns>
                <grid:DataGridTextColumn x:Name="columnId" x:Uid="columnId" Header="Id" IsVisible="False" PropertyName="Id"/>
                <grid:DataGridTextColumn x:Name="columnGuid" x:Uid="columnGuid" Header="Guid" IsVisible="False" PropertyName="Guid"/>
                <grid:DataGridTextColumn x:Name="columnFaceSetId" x:Uid="columnFaceSetId" Header="FaceSetId" IsVisible="False" PropertyName="FaceSetId"/>
                <grid:DataGridTextColumn x:Name="columnPersonId" x:Uid="columnPersonId" Header="PersonId" PropertyName="PersonId"/>
                <grid:DataGridTextColumn x:Name="columnName" x:Uid="columnName" Header="Name" PropertyName="Name"/>

                <grid:DataGridTemplateColumn x:Name="columnHead" x:Uid="columnHead" Header="Head">
                    <grid:DataGridTemplateColumn.CellContentTemplate>
                        <DataTemplate>
                            <Ellipse Width="50" Height="50" Margin="2">
                                <Ellipse.Fill>
                                    <ImageBrush ImageSource="{Binding Head}"/>
                                </Ellipse.Fill>
                            </Ellipse>
                        </DataTemplate>
                    </grid:DataGridTemplateColumn.CellContentTemplate>
                </grid:DataGridTemplateColumn>
                <grid:DataGridTextColumn x:Name="columnSignInItemName" x:Uid="columnSignInItemName" Header="SignInItemName" PropertyName="SignInItemName"/>
                <grid:DataGridNumericalColumn x:Name="columnSignInItemTimes" x:Uid="columnSignInItemTimes" Header="SignInItemTimes" PropertyName="SignInItemTimes"/>
                <grid:DataGridNumericalColumn x:Name="columnSignInAttendanceRate" x:Uid="columnSignInAttendanceRate" Header="SignInAttendanceRate" PropertyName="SignInAttendanceRate" CellContentFormat="{}{0:P0}"/>
                <grid:DataGridDateColumn x:Name="columnSignInDateTime" x:Uid="columnSignInDateTime" Header="SignInDateTime" PropertyName="SignInDateTime"/>
                <grid:DataGridTextColumn x:Name="columnSignInState" x:Uid="columnSignInState" Header="SignInState" PropertyName="SignInState"/>
            </grid:RadDataGrid.Columns>

            <!--<grid:RadDataGrid.SortDescriptors>
                <core:PropertySortDescriptor PropertyName="PersonId" SortOrder="Ascending" />
                <core:PropertySortDescriptor PropertyName="SignInItemName" SortOrder="Ascending" />
                <core:PropertySortDescriptor PropertyName="SignInItemTimes" SortOrder="Ascending" />
            </grid:RadDataGrid.SortDescriptors>-->

        </grid:RadDataGrid>

其中,我在 <grid:RadDataGrid.Resources 中定义了右键菜单,你自己根据需要删减。

属性 说明
Background
背景色
UserEditMode
用户编辑模式,Inline是行内编辑模式,External是弹出一个浮窗编辑
UserSortMode
用户排序模式,Multiple可以允许设置多个字段排序
SelectionUnit
选择单位,Row表示选择整行,Cell则是选择一个单元格
CanUserChooseColumns
是否允许用户选择列
AutoGenerateColumns
自动生成列,我设置的false,因为我数据库有很多字段,不想都显示在上面,所以需要自己定义。如果是true,则把所有字段都显示的

然后 grid:DataGridTemplateColumn 自定义模板。

后台C#读取数据库绑定的代码。

public ObservableCollection<SignInSummaryData> SampleItems { get; private set; } = new ObservableCollection<SignInSummaryData>();

代码绑定以下,然后加了一个排序,因为之前指定了 UserSortMode 为Multiple

        private async Task LoadDataAsync()
        {
            SampleItems.Clear();

            List<UserSignInInfo> list = await SQLiteHelper.GetAllUserSignInInfoAsync();
            //this.DataContext = SampleItems = new ObservableCollection<UserSignInInfo>(list);

            foreach (var item in list)
            {
                UserItemSQLite uis = await SQLiteHelper.GetUserAsync("Remark", item.PersonId);
                if (uis == null)
                    continue;

                BitmapImage thumbBi = new BitmapImage();
                if (uis.Head0 != null)
                {
                    StorageFolder storageFolder = ApplicationData.Current.TemporaryFolder;
                    StorageFile thumbFile = await storageFolder.CreateFileAsync("signInHeadthumbFile.jpg", CreationCollisionOption.ReplaceExisting);
                    await FileIO.WriteBytesAsync(thumbFile, uis.Head0);
                    StorageItemThumbnail sit = await thumbFile.GetThumbnailAsync(ThumbnailMode.DocumentsView, 400);
                    IRandomAccessStream ras = sit.AsStream().AsRandomAccessStream();

                    await thumbBi.SetSourceAsync(ras);
                }

                SignInSummaryData sid = new SignInSummaryData
                {
                    Id = item.Id,
                    Guid = uis.Guid,
                    FaceSetId = uis.FaceSetId,
                    PersonId = item.PersonId,
                    Name = uis.Name,

                    SignInItemName = item.SignInItemName,
                    SignInItemTimes = item.SignInItemTimes,
                    SignInAttendanceRate = item.SignInAttendanceRate,
                    SignInDateTime = Convert.ToDateTime(item.SignInDateTime),
                    SignInState = item.SignInState,

                    Head = thumbBi,
                    Head0 = uis.Head0,
                    Head1 = uis.Head1,
                    Head2 = uis.Head2,
                    Head3 = uis.Head3,
                    Head4 = uis.Head4,
                    Head5 = uis.Head5,
                    Head6 = uis.Head6,
                    Head7 = uis.Head7,
                    Head8 = uis.Head8,
                    Head9 = uis.Head9,

                    Area1 = uis.Area1,
                    Area2 = uis.Area2,
                    Area3 = uis.Area3,
                    Area4 = uis.Area4,
                    Area5 = uis.Area5,
                    Area6 = uis.Area6,
                    Area7 = uis.Area7,
                    Area8 = uis.Area8,

                    Gender = uis.Gender,
                    Mobile = uis.Mobile,
                    Email = uis.Email,
                    RemarkReal = uis.RemarkReal,

                };

                SampleItems.Add(sid);

                radDataGrid.ItemsSource = SampleItems;// = new ObservableCollection<SignInSummaryData>(list);
            }

            radDataGrid.SortDescriptors.Add(new PropertySortDescriptor() { PropertyName = "PersonId", SortOrder = SortOrder.Ascending });
            radDataGrid.SortDescriptors.Add(new PropertySortDescriptor() { PropertyName = "SignInItemName", SortOrder = SortOrder.Ascending });
            radDataGrid.SortDescriptors.Add(new PropertySortDescriptor() { PropertyName = "SignInItemTimes", SortOrder = SortOrder.Ascending });
        }

这样就可以实现开头的效果了。

下一篇说以下环形图的制作。

原文地址:https://www.cnblogs.com/hupo376787/p/8592741.html

时间: 2024-08-03 03:48:22

UWP 使用Telerik Grid控件的相关文章

扩展ToolBarManager、ListView和Grid控件以实现气球式的ToolTip

原文:扩展ToolBarManager.ListView和Grid控件以实现气球式的ToolTip infragistics是全球领先的UI工具和用户体验的专家,Infragistics开发了一系列的炫目的Windows.Web.WPF和Silverlight控件,相信很多人在使用它们.我们现在的项目就在使用Infragistics的Windows Form控件集.虽然这些控件功能强大,也不可能满足你所有的需求,尤其是那些比较苛刻的最终用户的需求.比如,我们最近就接收到这样一个变态的需求:让所以

DevExpress Grid控件经典常用功能代码收集

随着DevExpress 控件包越来越多的被中国用户使用,由于是英文版本,看英文版使用说明非常困难,慧都控件网在DevExpress 控件包使用方面有多年的研究,慧都控件网会不断的把DevExpress 使用经验分享给大家.»更多DevExpress开发资源与帮助文档 下面是我们平时收集最常用的DevExpress Winform 4个代码片段,比较常用,希望对广大DEV用户有帮助. 一 .GridControl的删除操作 private void rILinkEditInfoDel_Click

Win10 UWP开发系列——开源控件库:UWPCommunityToolkit

原文:Win10 UWP开发系列--开源控件库:UWPCommunityToolkit 在开发应用的过程中,不可避免的会使用第三方类库.之前用过一个WinRTXamlToolkit.UWP,现在微软官方发布了一个新的开源控件库—— UWPCommunityToolkit 项目代码托管在Github上:https://github.com/Microsoft/UWPCommunityToolkit 包括以下几个类库: 都可以很方便的从Nuget上安装. NuGet Package Name des

FineUI Grid控件高度自适应

引言 页面里使用f:Grid控件,添加分页功能,然后高度填充整个页面. 如何使用 使用FineUI 控件的每个页面都有一个f:PageManager控件,它包含属性:AutoSizePanelID,设置需要填充的控件ID,从它的demo可以看出,正常情况下需要再放置一个容器Panel,就可以使整个页面填充. <f:PageManager ID="PageManager1" runat="server" AutoSizePanelID="ResultS

&lt;telerik:RadGridView/&gt;控件的使用

学习Telerik第三方控件中的WPF时,对于RadGridView控件做的一些记录. AutoGenerateColumns:启动时是否生成列 ShowGroupPanel:是否显示表格的分组名称 CanUserFreezeColumns:是否冻结表格列 CanUserResizeColumns:是否允许调整表格列大小 telerik:StyleManager.Theme:表格显示的样式模板 RowIndicatorVisibility:表格默认的第一列的显示形式,Collapsed折叠,Hi

FineUI Grid控件右键菜单的实现

FineUI官方Demo上一直没有Grid右键菜单的实现,其实从4.1.x的版本开始,允许添加自定义的事件监听(Listeners),所以要实现这个功能已经相当容易了. ExtJs右键菜单有很多种,对于Grid控件来说,我这里只简单说明两种实现.即在表格的数据行上右键单击时弹出的菜单,以及在空白位置右键单击时弹出的菜单. 时间有限,废话不多说了,先看两个效果图.(实现环境 FineUI4.1.6,.NET 4.0因为需要指定控件的ID) 1. 数据行右键菜单 2. 空白处右键菜单 实现方法: s

fine ui grid控件添加行号

grid控件的列中添加如下代码<f:RowNumberField EnablePagingNumber="true" TextAlign="Center" /> 原文地址:https://www.cnblogs.com/wangjp-1233/p/10124727.html

在 UWP 中实现 Expander 控件

WPF 中的 Expander 控件在 Windows 10 SDK 中并不提供,本文主要说明,如何在 UWP 中创建这样一个控件.其效果如下图: 首先,分析该控件需要的一些特性,它应该至少包括如下三个属性: Content: 最重要的属性,设置该属性,可以使 Expander 控件显示其内容: Header: 控件的 Header: IsExpand: 当前是否展开. 接下来是定义其 UI,在这里使用 Grid,添加两行,一行显示 Header,一行显示 Content,当 IsExpand

uwp开发:Pivot控件在加载数据时的一些细节性问题

最近在做一款汽车资讯.新闻.参数查询的客户端,里面多处用到了网络请求以及列表显示,所以我采用Pivot的方式显示各项的内容,如图所示: 但是每一项的网络请求Api是不同的,所以要发送不同的网络请求.由于Pivot是在同一个page下进行展示的,所以,我不得不考虑一个问题: 就是Pivot的这样的加载方式对数据请求到底是怎么影响的?多项是同时加载的吗?这样会对性能有要求吗? 带着这些疑问,我做了下测试,在每个PivotItem的Loaded事件处设置断点,进行调试,发现只要进入这个page,所有P