2013-06-18 3 views
2

이제 WPF 영역에 들어가기 때문에 사용자 지정 컨트롤을 만들고 싶습니다. 나는 그것의 스타일링에 너무 신경 쓰지 않고 오히려 그 기능성에 관심이있다.WPF 사용자 지정 컨트롤 기본 데이터 바인딩

다른 WPF 응용 프로그램이이 컨트롤을 사용하여이 데이터를 사용자에게 공개하고 피드백을 받도록 다른 라이브러리의 데이터로 자동 채우기되는 사용자 지정 트리 뷰를 만들려고합니다. 용이함.

IE :

+-----------------------------+ 
|+Project      | 
|+-- File      | 
|+---- Patch     | 
|+Other Project    | 
|+-- Files Are Nifty   | 
|+---- Yup.     | 
+-----------------------------+ 

내가 원하는 ^이^항상 모든 인스턴스 사이에서 동일한 데이터를 가지고 있어야 재 사용 가능한 제어를합니다. 기본적으로 기본 데이터 바인딩입니다. 인터넷 검색을 조금 해봤지만 여기에서 검색했지만 모든 질문/답변 중 어느 것이 적합하지 않거나, 내 머리 위로, 또는 둘 다였습니다. 내가 찾은 유용한 정보는 데이터 제공자가 두 개의 브랜치를 가지며 CompositeCollection을 반환한다는 것입니다.

누군가가 이것을 설명 할 수 있다면 WPF Custom Control 라이브러리에 대해 단계별로 설명해 주시면 감사하겠습니다.

답변

0

데이터가 항상 동일한 패턴 (예 : 프로젝트에 파일이 있고 패치가 있음) 인 경우 반드시 CompositeCollection이 필요하지 않습니다. 또한과 같이 데이터를 표시 할 HierarchicalDataTemplates을 사용할 수

<HierarchicalDataTemplate x:Key="ProjectTemplate" 
ItemsSource="{Binding ChildCollection}" 
ItemTemplate="{StaticResource FileTemplate}"> 
     <here comes the actual TreeViewItem of this Template> 
    </HierarchicalDataTemplate> 

귀하의 FileTemplate 다른 HierarchicalDataTemplate 인이이 지남에 가장 낮은 수준에 도달 할 때까지,이 DataTemplate이 될 것입니다.

public class Project 
{ 
    public ObservableCollection<File> ChildCollection {get;set;} 
} 
:

    <TreeView ItemsSource="{Binding Path=ChildCollection, UpdateSourceTrigger=PropertyChanged}" ItemTemplate="{StaticResource ResourceKey=ProjectTemplate}"> 
        </TreeView> 

데이터가 다음과 같이 수 : 이러한 모든 템플릿은 이제 모든 사용자가 최상위 HierarchicalDataTemplate (ProjectTemplate)에 트 리뷰의 ItemTemplate을 설정한다 할 필요가, 자원에 배치됩니다

파일에 다른 ChildCollection (예 : ObservableCollection<Patch>)이 있습니다.
기본 DataContext를 설정하려면 생성자의 DataContext를 Type의 ChildCollection이있는 ViewModel로 설정할 수 있습니다.

+0

하지만 XAML (파일)은 어디에 배치해야합니까? –

+0

TreeView 위치입니다. –

+0

하지만 ... 내 물건을 사용하는 코드가 모든 사용자 지정 XAML을 수행하는 것을 원하지 않습니다. –

관련 문제