WPFインターフェイス開発:異なるコレクションのアイテムを同じ親ノードの子として表示する方法

最新のコントロールガントチャートであるDevExpress v20.1の使用方法を教える40分で今すぐ登録>>

DevExpress v20.1フルバージョンをダウンロードDevExpress v20.1 中国語リソース獲得    

DevExpress社のWPFコントロール、あなたは現代的な顧客のニーズに焦点を当て、強力なインタラクティブ機能を備えたXAMLベースのアプリケーションを作成することができますし、将来的にはタッチ対応ソリューションの新世代を構築します。

システムの背景

  • プラットフォーム:WPF
  • 製品:WPFのDXTreeList
  • フレームワーク:.NET Frameworkビルド20.1.4
  • オペレーティングシステム:Windows 10 x64
  • IDE:Microsoft Visual Studio 2019

発生した問題

TreeListViewを使用して構造化データを表示するソリューションを実現する場合、IChildNodesSelectorを使用してツリーを構築します。適切に機能している場合、モデルがあり、各レベルには複数のサブタイプがあり、ClassAにはメンバーList ClassBとリストClassCがあります。すべての例は、可能なサブタイプを1つだけ示していることがわかります。表示に関しては、すべてのクラスが、クラスの対応する属性にマップされるインターフェースを実装します。

パブリックインターフェイスITreeBaseItem 
{ 
string ObjectType {get; } 
string Element {get; } 
string Title {get; } 
string Detail1 {get; } 
string Detail2 {get; } 
string Detail3 {get; } 
}

ここから抜粋

パブリッククラスCustomChildrenSelector:IChildNodesSelector { 
public IEnumerable SelectChildren(object item){ 
if(item is ProjectStage)
return((ProjectStage)item).Tasks; 
else if(item is ProjectObject)
return((ProjectObject)item).Stages; 
nullを返します。
} 
}

問題は、ProjectStageクラスにタスクだけでなく、別のサブタイプ、つまり目標がある場合はどうなるでしょうか。IChildNodesSelectorを使用してこれを実行できますか、それとも他の戦略を続行する必要がありますか?

解決:

技術的には、これらのコレクションをセレクターにマージして、結果を返すことができます。以下に示す方法を参照できます。方法:子ノードセレクターを使用して階層データバインディングを実装するまた、不足しているさまざまなタイプの属性の編集を無効にし、CellTemplateSelectorを使用してこのメ​​ソッドを実装する必要があります。


DevExpress Technical Exchange Group 2:775869749グループディスカッションへようこそ

HuiduハイエンドUIインターフェイス開発

おすすめ

転載: blog.csdn.net/AABBbaby/article/details/108355919