翻譯|使用教程|編輯:龔雪|2025-02-12 10:25:53.123|閱讀 102 次
概述:本文主要介紹DevExpress WPF Grid控件的未綁定列,歡迎下載最新版組件體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DevExpress WPF擁有120+個控件和庫,將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序,這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件的衍伸產品,還是以數據為中心的商業智能產品,都能通過DevExpress WPF控件來實現。
未綁定列未綁定到數據源中的字段,這些列允許您根據綁定列中的值計算值,或顯示來自自定義數據源的數據。
DevExpress WPF GridControl中綁定列和未綁定列的功能是相同的,您可以按照與綁定列相同的方式對未綁定列進行排序、分組、顯示摘要和篩選。
DevExpress技術交流群11:749942875 歡迎一起進群討論
1. 向集合添加一個GridColumn對象。
2. 將UnboundDataType屬性設置為列應存儲的值的類型,GridControl根據該屬性值選擇列的默認編輯器。要替換編輯器,請使用屬性。
3. 為屬性分配一個唯一的字段名,字段名不能與另一列的字段名或數據源字段名相匹配。
4. 使用以下技術當中的一個向未綁定列填充數據:
XAML
<Window ... xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:sys="clr-namespace:System;assembly=mscorlib"> <dxg:GridControl x:Name="grid"> <!-- ... --> <dxg:GridColumn FieldName="Total" UnboundDataType="{x:Type sys:Decimal}" UnboundExpression="[Quantity] * [UnitPrice]"/> </dxg:GridControl>
C#
grid.Columns.Add(new DevExpress.Xpf.Grid.GridColumn() { FieldName = "Total", UnboundDataType = typeof(decimal), UnboundExpression = "[Quantity] * [UnitPrice]" });
VB.NET
grid.Columns.Add(New DevExpress.Xpf.Grid.GridColumn() With { .FieldName = "Total", .UnboundDataType = GetType(Decimal), .UnboundExpression = "[Quantity] * [UnitPrice]" })
您也可以使用/屬性來維護一個干凈的MVVM模式,并在ViewModel中填充未綁定的列。
XAML
<dxg:GridControl ItemsSource="{Binding Items}" CustomUnboundColumnDataCommand="{Binding UnboundColumnDataCommand}"> <!-- ... --> <dxg:GridColumn FieldName="Total" UnboundDataType="{x:Type sys:Decimal}"/> </dxg:GridControl>
C#
[Command] public void UnboundColumnData(UnboundColumnRowArgs args) { if(args.IsGetData) { var item = (Product)args.Item; args.Value = item.UnitPrice * item.Quantity; } }
VB.NET
<Command> Public Sub UnboundColumnData(ByVal args As UnboundColumnRowArgs) If args.IsGetData Then Dim item = CType(args.Item, Product) args.Value = item.UnitPrice * item.Quantity End If End Sub
在大多數情況下,未綁定列的數據是從自定義數據源獲取的,或者根據綁定列的值計算。
如果從自定義數據源檢索未綁定數據,則可以對其進行編輯。在用戶更改了未綁定列的值之后,應該將該值保存回網格的數據源。要為未綁定列提供數據并將任何更改保存到自定義數據源,請處理 事件。請注意,此事件僅針對未綁定的列引發。
事件參數的屬性返回true,將為每個數據行引發事件,從而允許指定未綁定列的值。網格數據源中被處理的行索引由屬性返回,應該給屬性分配一個值。
事件參數的屬性返回true,屬性包含應該保存到自定義數據源的修改后的單元格值。
下面的代碼示例使用Dictionary創建一個可編輯的未綁定列:
XAML
<dxg:GridControl Name="grid" AutoGenerateColumns="AddNew" EnableSmartColumnsGeneration="True" ItemsSource="{Binding List}" CustomUnboundColumnData="grid_CustomUnboundColumnData"> <dxg:GridControl.Columns> <dxg:GridColumn FieldName="MyUnboundColumn" UnboundDataType="{x:Type sys:String}"/> <!-- ... --> </dxg:GridControl.Columns> </dxg:GridControl>
C#
Dictionary<int, string> unboundData = new Dictionary<int, string>(); unboundData[0] = "MyText"; //... private void grid_CustomUnboundColumnData(object sender, GridColumnDataEventArgs e) { if (e.Column.FieldName == "MyUnboundColumn") { // Populate columns if (e.IsGetData) { if (unboundData.ContainsKey(e.ListSourceRowIndex)) e.Value = unboundData[e.ListSourceRowIndex]; } // Post edited values to the underlying data source if (e.IsSetData && e.Value != null) { unboundData[e.ListSourceRowIndex] = e.Value.ToString(); } } }
VB.NET
Dictionary<int, string> unboundData = new Dictionary<int, string>(); unboundData[0] = "MyText"; ' ... Private Sub grid_CustomUnboundColumnData(ByVal sender As Object, ByVal e As GridColumnDataEventArgs) If e.Column.FieldName = "MyUnboundColumn" Then ' Populate columns If e.IsGetData Then If unboundData.ContainsKey(e.ListSourceRowIndex) Then e.Value = unboundData(e.ListSourceRowIndex) End If ' Post edited values to the underlying data source If e.IsSetData AndAlso e.Value IsNot Nothing Then unboundData(e.ListSourceRowIndex) = e.Value.ToString() End If End If End Sub
慧都科技為國內眾多知名企業提供一站式的DevExpress產品中文服務,負責DevExpress控件產品中國區的銷售、試用、技術支持,賦能航空航天、金融、醫療等行業客戶成功構建企業級應用!歡迎咨詢:023-68661681,慧都科技助力企業邁向新高度!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網