商信互联
本示例演示如何将自定义数据绑定(数据感知)控件添加到视图,以及如何从WinForms XAF应用程序中的导航显示该视图。出于演示目的,在本示例中,您将带有CardView的GridControl控件添加到EFDemo应用程序(默认情况下安装到%PUBLIC%\ Documents \ DevExpress Demos 19.2 \ Components \ eXpressApp Framework \ EFDemoCodeFirst)。但是,您可以在自己的XAF应用程序中将相同的方法与任何其他自定义控件一起使用。
在WinForms模块项目中,创建一个User Control。右键单击该项目,然后选择添加|。用户控制...
从工具箱中向设计器添加所需的控件,例如GridControl。
根据需要自定义控件;例如,将GridControl.MainView转换为CardView。
您也可以从DX添加CollectionDataSource组件。19.2:“报表的XAF数据源”工具箱组,然后将控件绑定到此组件。使用DataSourceBase.ObjectTypeName属性可以指定所需的业务对象类型。这将使您能够查看设计器中的数据列并根据需要自定义它们。实际的数据绑定将在代码中进一步执行。
关闭设计器,右键单击UserControl1.cs(UserControl1.vb)文件,然后选择“查看代码”以编辑用户控件代码。实现IComplexControl接口。在IComplexControl.Setup方法中,可以使用objectSpace参数访问对象空间,使用对象空间API读取所需的数据,然后初始化控件的数据源。在IComplexControl.Refresh方法(当用户单击“刷新操作”时执行),可以重新创建控件的数据源。下面的代码演示了分配给GridControl.DataSource属性的DemoTask对象。
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Editors;
// ...
public partial class UserControl1 : UserControl, IComplexControl {
public UserControl1() {
InitializeComponent();
}
private IObjectSpace objectSpace;
void IComplexControl.Setup(IObjectSpace objectSpace, XafApplication application) {
gridControl1.DataSource = objectSpace.GetObjects<EFDemo.Module.Data.DemoTask>();
this.objectSpace = objectSpace;
}
void IComplexControl.Refresh() {
gridControl1.DataSource = objectSpace.GetObjects<EFDemo.Module.Data.DemoTask>();
}
}
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Editors
' ...
Partial Public Class UserControl1
Inherits UserControl
Implements IComplexControl
Public Sub New()
InitializeComponent()
End Sub
Private objectSpace As IObjectSpace
Private Sub IComplexControl_Setup(ByVal objectSpace As IObjectSpace, ByVal application As XafApplication) Implements IComplexControl.Setup
gridControl1.DataSource = objectSpace.GetObjects(Of EFDemo.Module.Data.DemoTask)()
Me.objectSpace = objectSpace
End Sub
Private Sub IComplexControl_Refresh() Implements IComplexControl.Refresh
gridControl1.DataSource = objectSpace.GetObjects(Of EFDemo.Module.Data.DemoTask)()
End Sub
End Class
您还可以使用XafApplication.Model属性使用application参数来访问某些Application Model设置,并相应地自定义控件。
在WinForms模块项目中,双击Model.DesignedDiffs.xafml文件以启动“模型编辑器”。右键单击“视图”节点,然后选择“添加” |“添加”。DashboardView。
将Id属性设置为TaskCardView。
用鼠标右键单击视图|。TaskCardView | 项目节点,然后选择添加... | ControlDetailItem。
将Id属性设置为TaskCardView,并将IModelControlDetailItem.ControlTypeName属性设置为您创建的自定义用户控件的类型(例如EFDemo.Module.Win.UserControl1)。
重点关注“布局”节点。右键单击右侧的设计器图面,然后选择“自定义布局”。然后,右键单击TaskCardView布局项目,然后选择“隐藏文本”。
您可以将ControlViewItem视图项目添加到任何现有的详细信息视图或仪表板视图中,而不用创建新的仪表板视图。
导航到NavigationItems | 物品| 默认值| 项目节点。右键单击Items节点,然后选择Add''。调用的上下文菜单中的NavigationItem。
对于新添加的节点,在IModelNavigationItem.View下拉列表中,选择您之前创建的视图(TaskCardView)。
运行WinForms应用程序,然后在导航中单击“任务卡视图”。将显示绑定到DemoTask集合的Card View(请参阅本主题开头的图像)。