2011-10-12 2 views
1

순수 계층 적 wpf 데이터 격자를 사용할 수 있습니까? 이제 인터넷을 통해 dicussed 3 가능한 해결책 ...TreeView 형식 계층 구조가있는 WPF DataGrid

  1. 는 각각 가지고

지금 3 내 경우에는 유용하지 않다하는 GroupStyle

  • TreeListView 대신 데이터 그리드
  • RowDetailsTemplate있다 제한 사항.

    GroupStyle은 그룹화 된 행 표현자를 제공하지만 부모는 단순히 GroupItem입니다. 내 데이터 소스가 다른 곳입니다. 내 경우에는 그룹화 된 항목의 부모가 동일한 유형의 항목이됩니다.

    Folder 클래스는 List<Folders> children입니다. 따라서 하위 폴더의 부모는 Folder 자체 유형입니다.

    RowDetailsTemplateChildren에 바인딩 된 다른 데이터 그리드를 호스트 나에게 필요하지만 그것이 자신의 열 머리글을 가지고 내가 원하는 것은 단지, 부모 데이터 그리드의 동일한 열보기에 아이입니다 것입니다 의미 그들이하는 것처럼 TreeListView.

    그리고 TreeListView에 대한

    는, 내가 지금 사용하고 무엇을 먹으 렴,하지만 문제는 ...

    는 가상화를 푼다 및 을 그것이 데이터 그리드

    :-)

    I 아니다 같은 데이터 그리드에 대한 계층 구조보기를 토글하는 일부 첨부 된 동작처럼 생각하고있었습니다 ...

    <DataGrid HierarchicalBehavior.HierarchyPath="Children" ... /> 
    

    여기서 Children은 각 항목 아래 IEnumerable 유형의 자산입니다.

    나는 너희들이 내가 무엇을 얻고 있는지 이해하기를 바란다.

    아이디어가 있으십니까?

  • +0

    다른 데이터 격자를 사용하지 않는 이유는 무엇입니까? Infragistics/telerik/Xceed/DevXpress 등? 자금? –

    +0

    네, 정확히 같은 이유입니다. WPF DataGrid는 .Net 4.0 프레임 워크의 일부이므로 기본적으로 무료입니다. –

    답변

    2

    마지막으로 구현할 수 있습니다. 코드가 너무 커서 게시 할 수 없습니다. 그러나 누군가 해결책을 찾고 있다면 저에게 이메일을 보내십시오.

    Bascially 나는 단순 목록으로 항목의 계층 구조의 빠른 플래트 닝을 사용

    1. 다음과 같은 일을 ...했다.
    2. I 기본 클래스를 통해 추가적인 특성은 다음 INotifyPropertyChanged도를 구현 WPF 데이터 그리드에 결합 각 항목 ..이 항목에 대한 자식

    상위 => 부모 항목. 읽기 전용.

    HasHierarchy => 계층 구조 하위가 null이거나 비어 있으면 거짓입니다. 쓰기 가능.

    IsItemVisible => 현재의 시야. 쓰기 가능.

    IsBranchVisible = 조상에 IsExpanded = false 또는 IsItemVisible = false가 있으면 거짓입니다. 읽기 전용이지만 알림이 가능합니다.

    IsExpanded => 항목이 확장 된 경우. 쓰기 가능.

    3. I put a PLINQ call to filter the `IsBranchVisible` property as true, of all children whenever any descenden's `IsExpanded` property is **toggled**. 
    

    Voala! 그것은 매력처럼 작동합니다. PLINQ로 인해 빠릅니다.