연결, 데이터베이스, 테이블 등을 관리하는 응용 프로그램을 구축 중입니다. 여러 하위 컬렉션으로 항목 모음을 바인딩해야합니다 (아래 참조). 난 꽤 WPF에 새로운 오전 및이 질문에 대한 응답이 이미 있는지 확실하지 않은 경우. 검색했지만 찾은 시나리오의 예는 발견하지 못했습니다.WPF TreeView 여러 개의 하위 컬렉션 바인딩
server1
-database1
--functions <- "static" node
---function1
---function2
--users <- "static" node
---user1
---user2
-database2
--functions <- "static" node
---function3
---function4
--users <- "static" node
---user3
---user4
데이터를 바인딩하려고 할 때 데이터를 표시 할 수 있지만 위의 형식이 아닙니다. 이렇게 표시됩니다.
server1
-database1
--function1
--function2
--user1
--user2
객체 계층 구조 :
class DatabaseViewModel
{
public string Name
{
// normal getters and setters for 2way binding
}
public IObservableCollection<DbFunctionViewModel> Functions
{
// normal getters and setters for 2way binding
}
public IObservableCollection<DbUserViewModel> Users
{
// normal getters and setters for 2way binding
}
}
마크 업 :
<TreeView x:Name="Connections">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type viewModels:DbConnectionViewModel}" ItemsSource="{Binding Databases}">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="Name" Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type viewModels:DbDatabaseViewModel}" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="Name" Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type viewModels:DbFunctionViewModel}">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="Name" Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type viewModels:DbUserViewModel}">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="Name" Text="{Binding UserName}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
내가 모두를 포함하는 CompositeCollection를 반환 시도하고 내가 뭔가에 필요한 방법을 작동하지 않았다.
public IList Children
{
get
{
return new CompositeCollection
{
new CollectionContainer { Collection = Functions },
new CollectionContainer { Collection = Users }
};
}
}
제 질문은 어떻게 users 노드와 모든 기능을 node 노드에 bind합니까? 모든 조언을 크게 주시면 감사하겠습니다. 감사!
귀하가 진술 한 문제를 해결 한 경우 답변을 수락 된 것으로 표시 할 수 있습니까? 이렇게하면 "답이없는 질문"목록을 깨끗하게 유지하는 데 도움이됩니다.) –