DevExpressv20.2フルバージョンをダウンロードする
DevExpress Technical Exchange Group 3:700924826グループディスカッションへようこそ
DevExpress WPF サブスクリプション(以前の名前はDevExpress WPF Controls)には、120以上のコントロールとライブラリがあり、ビジネスのニーズを満たす、または超える高性能のビジネスアプリケーションを提供するのに役立ちます。DevExpress WPFを使用すると、強力なインタラクティブ機能を備えたXAML基本アプリケーションを作成できます。これらのアプリケーションは、現代の顧客のニーズに焦点を合わせ、将来的には新世代のタッチ対応ソリューションを構築します。Officeソフトウェアの拡張であろうと、データ中心のビジネスインテリジェンス製品であろうと、DevExpressWPFコントロールを介して実装できます。
問題
複数選択機能を備えたグリッドセルにツリーエディターを埋め込もうとしていますが、ビューモデルSelectedPerilsをポップアップツリーコントロールのチェックされた項目にバインドするにはどうすればよいですか?
解決
現在の目標は、TreeListViewでポップアップエディターを使用してコレクションのプロパティを編集することであると理解されています。この記事では、この操作に必要な手順について説明します。
1. GridControlは、FieldNameでバインドされたコレクションプロパティの編集をサポートしていません。プロパティ宣言を変更して、オブジェクトタイプを使用するか、FieldNameの代わりにBindingを使用することができます。列をデータソースフィールドにバインドするを参照してください。最初のオプションを使用しましょう。
C#
パブリックオブジェクトSelectedPerils {get; セットする; } // ... 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.当社は、ポップアップウィンドウでGRIDCONTROLを表示するLookUpEditを使用して、使用することをお勧めしますMultiSelectLookUpEditStyleSettingsをこの操作を実行するには事前に定義された方法であり、そのための複数選択機能を有効にします。デフォルトの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 /> < LookUpEdit.StyleSettings> </ dxg:LookUpEdit> </ DataTemplate > </ dxg:GridColumn.CellTemplate> </ dxg:GridColumn>
3.エディターはネストされた値を選択できる必要があるため、自己参照データ構造を使用する必要があります。そのため、テンプレートでKeyFieldName属性とParentFieldName属性が使用されます。それ以外の場合、DisplayMemberがそこで使用され 、検索モードがオンになっているため、LookUpEditはItemsSource以外の値を拒否します。
C#
public class Peril { public int ID {get; セットする; } public int ParentID {get; セットする; } = -1; // ... } // ... Perils = new List <Peril> { new Peril {Name = "Earthquake"、ID = 0}、 new Peril {Name = "EQ"、ID = 10、ParentID = 0} 、 新しい危険{名前= "FF"、ID = 11、ParentID = 0}、 新しい危険{名前= "ハリケーン"、ID = 1}、 新しい危険{名前= "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 }、 新しい危険{名前= "WS"、ID = 15、ParentID = 2}、 };
4. CheckBoxFieldNameプロパティは使用されませんが、SelectionModeがMultipleRowに設定されているため、TreeListViewのチェックボックスはその選択に影響しません。カスタム実装を使用して同期する必要があり(たとえば、TreeViewを使用したLookupEdit-選択したアイテムの取得を参照)、TreeListViewの選択はSelectedPerilsプロパティに自動的に投稿されます。
これは、次のスクリーンショットに示すデモ結果です。