• <menu id="w2i4a"></menu>
  • logo DevExpress WPF使用技巧教程

    文檔首頁>>DevExpress WPF使用技巧教程>>DevExpress WPF使用技巧教程:如何將不同集合中的項目顯示為同一父節(jié)點子項

    DevExpress WPF使用技巧教程:如何將不同集合中的項目顯示為同一父節(jié)點子項


    下載DevExpress v20.1完整版    DevExpress v20.1漢化資源獲取

    通過DevExpress WPF Controls,您能創(chuàng)建有著強大互動功能的XAML基礎應用程序,這些應用程序?qū)W⒂诋敶蛻舻男枨蠛蜆嫿ㄎ磥硇乱淮С钟|摸的解決方案。

    系統(tǒng)背景
    • 平臺:WPF
    • 產(chǎn)品:DXTreeList for WPF
    • 框架:.NET Framework Build 20.1.4
    • 操作系統(tǒng):Windows 10 x64
    • IDE:Microsoft Visual Studio 2019
    遇到的問題

    在使用TreeListView實現(xiàn)解決方案顯示結構化數(shù)據(jù)時,使用IChildNodesSelector來構建樹。工作正常時有一個模型,每個級別可以有多個SubType,ClassA具有成員List ClassB和List ClassC。發(fā)現(xiàn)所有示例僅提及一種可能的子類型,至于顯示,所有的類都實現(xiàn)一個接口,該接口映射到類的相應屬性。

    public interface ITreeBaseItem
    {
    string ObjectType { get; }
    string Element { get; }
    string Title { get; }
    string Detail1 { get; }
    string Detail2 { get; }
    string Detail3 { get; }
    }

    該摘錄摘自這里

    public class CustomChildrenSelector : IChildNodesSelector {
    public IEnumerable SelectChildren(object item) {
    if (item is ProjectStage)
    return ((ProjectStage)item).Tasks;
    else if (item is ProjectObject)
    return ((ProjectObject)item).Stages;
    return null;
    }
    }

    問題是:如果ProjectStage類不僅具有任務,還具有另一個子類型,即目標,該怎么辦? 可以使用IChildNodesSelector完成此操作,還是應該繼續(xù)執(zhí)行其他策略?

    解決方案:

    從技術上講,可以將這些集合合并到選擇器中并返回結果??蓞⒖枷旅嫜菔镜姆椒ǎ?a >How to: Implement Hierarchical Data Binding via Child Nodes Selector。還必須禁用不同類型缺少屬性的編輯,使用CellTemplateSelector來實現(xiàn)這種方法。


    DevExpress技術交流群2:775869749      歡迎一起進群討論

    40分鐘教你入門DevExpress v20.1最新推出控件——甘特圖,立即報名>>

    慧都高端UI界面開發(fā)
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();