sap和国家网站做接口,旅游电子商务网站建设规划方案,what is wordpress,赚钱黑渠道DevExpress WPF拥有120个控件和库#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…DevExpress WPF拥有120个控件和库将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品还是以数据为中心的商业智能产品都能通过DevExpress WPF控件来实现。
本教程演示了如何将GridControl添加到项目中并将控件绑定到数据库 获取DevExpress v24.1正式版下载
1. 使用DevExpress Template Gallery创建一个Blank MVVM Application这个项目模板包含一个样板View Model类并将其设置为MainView的数据上下文 2. 将项目连接到本地数据库示例如下Blank .NET 6 App with the Northwind Database 。
3. 将GridControl工具箱项添加到MainView 如果您的项目没有DevExpress.Wpf.Grid.Core.v24.1引用Visual Studio将显示以下消息 此消息通知您已添加所需的引用并要求再次添加控件。
提示如果您从NuGet源而不是从统一组件安装程序中获取DevExpress产品则工具箱中不包含DevExpress控件除非添加相应的NuGet包。跳转到Tools | NuGet Package Manager | Manage NuGet Packages for Solution然后添加DevExpress.Wpf.Grid NuGet包。
4. 选择GridControl然后调用Quick Actions菜单点击 Bind to a Data Source 来启动项目源向导 5. 选择一个数据源 选择一个表格来显示GridControl 选择Simple Binding模式。 确保启用了CRUD选项 选择View Model选项在View Model中生成数据绑定代码确认MainViewModel类被选择为视图模型 6. 选择项目源向导生成下面的代码
MainView.xaml
dxg:GridControl x:Namegrid AutoGenerateColumnsAddNew EnableSmartColumnsGenerationTrue ItemsSource{Binding ItemsSource} RestoreStateKeyFieldNameOrderId RestoreStateOnSourceChangeTrue
dxg:GridControl.TotalSummary
dxg:GridSummaryItem AlignmentRight SummaryTypeCount/
/dxg:GridControl.TotalSummary
dxg:GridControl.InputBindings
KeyBinding Command{Binding View.Commands.DeleteFocusedRow, ElementNamegrid} KeyDelete/
/dxg:GridControl.InputBindings
dxg:GridControl.View
dxg:TableView NewItemRowPositionTop ShowUpdateRowButtonsOnCellEditorOpen ValidateRowCommand{Binding ValidateRowCommand} ValidateRowDeletionCommand{Binding ValidateRowDeletionCommand} DataSourceRefreshCommand{Binding DataSourceRefreshCommand} ShowFixedTotalSummaryTrue/
/dxg:GridControl.View
dxg:GridColumn FieldNameOrderId IsSmartTrue ReadOnlyTrue/
dxg:GridColumn FieldNameCustomerId IsSmartTrue/
dxg:GridColumn FieldNameEmployeeId IsSmartTrue/
dxg:GridColumn FieldNameOrderDate IsSmartTrue/
dxg:GridColumn FieldNameRequiredDate IsSmartTrue/
dxg:GridColumn FieldNameShippedDate IsSmartTrue/
dxg:GridColumn FieldNameShipVia IsSmartTrue/
dxg:GridColumn FieldNameFreight IsSmartTrue/
dxg:GridColumn FieldNameShipName IsSmartTrue/
dxg:GridColumn FieldNameShipAddress IsSmartTrue/
dxg:GridColumn FieldNameShipCity IsSmartTrue/
dxg:GridColumn FieldNameShipRegion IsSmartTrue/
dxg:GridColumn FieldNameShipPostalCode IsSmartTrue/
dxg:GridColumn FieldNameShipCountry IsSmartTrue/
/dxg:GridControl
MainView.cs
using DevExpress.Mvvm;
using System;
using WPF_DataGrid_GetStarted.Models;
using DevExpress.Mvvm.DataAnnotations;
using System.Linq;
using System.Collections.Generic;
using DevExpress.Mvvm.Xpf;namespace WPF_DataGrid_GetStarted.ViewModels {
public class MainViewModel : ViewModelBase {
NorthwindEntities _Context;
IListOrder _ItemsSource;
public IListOrder ItemsSource {
get {
if (_ItemsSource null !DevExpress.Mvvm.ViewModelBase.IsInDesignMode) {
_Context new NorthwindEntities();
_ItemsSource _Context.Orders.ToList();
}
return _ItemsSource;
}
}
[Command]
public void ValidateRow(RowValidationArgs args) {
var item (Order)args.Item;
if (args.IsNewItem)
_Context.Orders.Add(item);
_Context.SaveChanges();
}
[Command]
public void ValidateRowDeletion(ValidateRowDeletionArgs args) {
var item (Order)args.Items.Single();
_Context.Orders.Remove(item);
_Context.SaveChanges();
}
[Command]
public void DataSourceRefresh(DataSourceRefreshArgs args) {
_ItemsSource null;
_Context null;
RaisePropertyChanged(nameof(ItemsSource));
}
}
}
MainView.vb
Imports DevExpress.Mvvm
Imports System
Imports WPF_DataGrid_GetStarted.Models
Imports DevExpress.Mvvm.DataAnnotations
Imports System.Linq
Imports System.Collections.Generic
Imports DevExpress.Mvvm.XpfNamespace WPF_DataGrid_GetStarted.ViewModels
Public Class MainViewModel
Inherits ViewModelBase
Private _Context As NorthwindEntities
Private _ItemsSource As IList(Of Order)
Public ReadOnly Property ItemsSource As IList(Of Order)
Get
If _ItemsSource Is Nothing AndAlso Not DevExpress.Mvvm.ViewModelBase.IsInDesignMode Then
_Context New NorthwindEntities()
_ItemsSource _Context.Orders.ToList()
End If
Return _ItemsSource
End Get
End Property
Command
Public Sub ValidateRow(ByVal args As RowValidationArgs)
Dim item CType(args.Item, Order)
If args.IsNewItem Then _Context.Orders.Add(item)
_Context.SaveChanges()
End Sub
Command
Public Sub ValidateRowDeletion(ByVal args As ValidateRowDeletionArgs)
Dim item CType(args.Items.Single(), Order)
_Context.Orders.Remove(item)
_Context.SaveChanges()
End Sub
Command
Public Sub DataSourceRefresh(ByVal args As DataSourceRefreshArgs)
_ItemsSource Nothing
_Context Nothing
RaisePropertyChanged(NameOf(ItemsSource))
End SubEnd Class
End Namespace
这段代码启用CRUD操作为所有数据源字段生成列并在固定的汇总面板中显示总行数。
7. 运行项目