2010-03-20 5 views
1

List of Drink를 WPF TreeView에 바인딩하는 방법을 모르겠습니다.Xaml을 사용하여 목록을 WPF 트리 뷰에 바인딩하는 방법?

struct Drink 
{ 
    public string Name { get; private set; } 
    public int Popularity { get; private set; } 

    public Drink (string name, int popularity) 
     : this () 
    { 
     this.Name = name; 
     this.Popularity = popularity; 
    } 
} 

List<Drink> coldDrinks = new List<Drink> (){ 
    new Drink ("Water", 1), 
    new Drink ("Fanta", 2), 
    new Drink ("Sprite", 3), 
    new Drink ("Coke", 4), 
    new Drink ("Milk", 5) }; 
     } 
    } 

예를 들어, 톱 here을 검색했습니다. 그러나 이것은 심지어 무엇을 의미하는 것 : ItemsSource="{x:Static local:TreeTest.BoatList}"

x:? static? local? 

어떻게 XAML에서 코드에서 컬렉션을 지정합니까?

+0

데이터가 계층 적 구조가 아닙니다. 정말 TreeView를 사용 하시겠습니까? 이 경우에는별로 의미가 없습니다. 정렬이'popularity'에 설정된'ListBox' 또는'ListView'는 더 이해할 수 있다고 생각합니다. –

+0

고마워요, 당신 말이 맞아요.하지만 wpf를 모르지만 이후에 실제로 데이터를 계층 적으로 대체하기 때문에 간단 해졌습니다. –

+0

@ 베니 :이 질문은이 질문에서도 제기되었습니다. http://stackoverflow.com/questions/2481010/how-to-bind-wpf-treeview-to-a-listdrink-programmatically –

답변

4

일반적으로 UserControl 또는 Window에 DataContext을 설정 한 다음 "coldDrinks"를 DataContext 클래스의 속성으로 정의 된 컬렉션으로 지정해야합니다. 이렇게하면

, 모든 그 것이다 필요한 것 :

<TreeView ItemsSource="{Binding ColdDrinks}" /> 

난 강력하게 WPF's Data Binding model에 최대 읽어 보시기 바랍니다. 이 점을 완전히 이해하면 WPF를 정말 즐겁게 만들 수 있습니다. 최근 질문 주어지고, 당신이 복용하는 것 접근, 당신은 MVVM에 읽어 약간의 시간을 가지고, 그리고 다른 건축 방식 고려할 수 있습니다 :


보조 노트에

. MVVM을 사용하지 않더라도 WPVM 용어를 설명하는 기사가 WPF 용어로 "생각"하도록 도움을 줄 수 있습니다.

Windows Forms style programming to WPF에서 이전 할 때 전체 시리즈를 작성했습니다. 특정 WPF 기능에 대해 설명하고 생각하는 방식을 변경해야하는 이유는 있지만 가장 순수한 "MVVM"기사보다 개념의 일부가 더 느리게 도입됩니다. 그것이 도움이 될 경우를 대비해서 나는 언급 할 것입니다.

+0

감사합니다. 처음 언급 한 것은 무엇입니까? "일반적으로, 당신은 확신하고 싶을 것입니다 ...". 내가해야합니까? –

+0

내 coldDrinks는 인스턴스 값으로 Window1 안에 있습니다. 도망 갔을 때 아이템이 전혀 보이지 않습니다. 정적이어야합니까? –

+0

@ 조안 : "this.DataContext = this;"라고 할 수 있습니다. 생성자에서 코드 숨김으로 원할 경우 그러나 업데이트 할 때 게시 한 기사를 읽는 것이 좋습니다. 톤을 사용하면 일을 계속 진행하는 대신에 이러한 일을하고 싶은 이유를 이해하는 데 도움이됩니다. –

관련 문제