翻譯|使用教程|編輯:龔雪|2021-01-14 10:07:38.753|閱讀 332 次
概述:DevExpress WPF Subscription擁有120+個控件和庫,將幫助您交付滿足甚至超出企業需求的高性能業務應用程序,本文將為大家介紹如何將樹編輯器添加到WPF數據網格單元中。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
下載DevExpress v20.2完整版 DevExpress v20.2漢化資源獲取
DevExpress WPF Subscription(曾命名DevExpress WPF Controls)擁有120+個控件和庫,將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序,這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件的衍伸產品,還是以數據為中心的商業智能產品,都能通過DevExpress WPF控件來實現。
試圖將樹編輯器嵌入具有多選功能的網格單元中,如何將視圖模型SelectedPerils綁定到彈出樹控件中的已檢查項目?
據了解,目前的目標是使用帶有TreeListView的彈出式編輯器來編輯集合屬性,本文將為大家解釋此操作所需要的步驟。
1. GridControl不支持編輯使用FieldName綁定的集合屬性,您可以更改屬性聲明,以便它使用對象類型或使用Binding而不是FieldName。請參閱,讓我們使用第一個選項:
C#
public object SelectedPerils { get; set; } //... SelectedPerils = new List<Peril>(); //... ((List<Peril>)Portfolios[0].SelectedPerils).Add(Portfolios[0].Perils[0]); ((List<Peril>)Portfolios[1].SelectedPerils).Add(Portfolios[1].Perils[1]); ((List<Peril>)Portfolios[2].SelectedPerils).Add(Portfolios[2].Perils[0]);
XAML
<dxg:GridColumn FieldName="SelectedPerils" />
2. 我們建議使用LookUpEdit在彈出窗口中顯示GridControl,使用為其啟用多選功能,這是執行此操作的預定義方法。由于您希望將其默認TableView替換為TreeListView,因此需要聲明CellTemplate和PopupContentTemplate:
XAML
<dxg:GridColumn FieldName="SelectedPerils"> <dxg:GridColumn.CellTemplate> <DataTemplate> <dxg:LookUpEdit DisplayMember="Name" ItemsSource="{Binding RowData.Row.Perils}" Name="PART_Editor"> <dxg:LookUpEdit.PopupContentTemplate> <ControlTemplate> <dxg:GridControl Name="PART_GridControl" SelectionMode="MultipleRow"> <dxg:GridControl.View> <dxg:TreeListView KeyFieldName="ID" ParentFieldName="ParentID" /> </dxg:GridControl.View> </dxg:GridControl> </ControlTemplate> </dxg:LookUpEdit.PopupContentTemplate> <dxg:LookUpEdit.StyleSettings> <dxg:MultiSelectLookUpEditStyleSettings /> </dxg:LookUpEdit.StyleSettings> </dxg:LookUpEdit> </DataTemplate> </dxg:GridColumn.CellTemplate> </dxg:GridColumn>
3. 您的編輯器應該能夠選擇嵌套值,因此您需要使用,這就是為什么在模板中使用KeyFieldName和ParentFieldName屬性的原因。 否則,您的LookUpEdit將拒絕其ItemsSource之外的值,因為在那里使用 并打開了查找模式。
C#
public class Peril { public int ID { get; set; } public int ParentID { get; set; } = -1; //... } //... Perils = new List<Peril> { new Peril { Name = "Earthquake", ID = 0}, new Peril { Name = "EQ", ID = 10, ParentID = 0 }, new Peril { Name = "FF", ID = 11, ParentID = 0 }, new Peril { Name = "Hurricane", ID = 1}, new Peril { Name = "HU", ID = 12, ParentID = 1 }, new Peril { Name = "TC", ID = 13, ParentID = 1 }, new Peril { Name = "Tornado Hail", ID = 2}, new Peril { Name = "TH", ID = 14, ParentID = 2 }, new Peril { Name = "WS", ID = 15, ParentID = 2 }, };
4. 沒有使用屬性,但是將設置為MultipleRow,TreeListView的復選框不會影響其選擇。 必須使用自定義實現對其進行同步(例如,請參閱帶有TreeView - Get選中項的LookupEdit),TreeListView的選擇將自動發布到SelectedPerils屬性。
這是演示結果如以下截圖所示:
DevExpress技術交流群3:700924826 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網