2013-06-16 1 views
3

다음 XAML 및 C# 클래스를 사용하여 Windows Phone 8 Toolkit Expander보기로 데이터 바인딩을 시도하고 있습니다. 헤더가 적절한 텍스트를 가지고 있기 때문에 DataContext가 올바르게 설정되어 있다는 것을 알고 있습니다. 생성자에서WP8 Toolkit ExpanderView에 대한 데이터 바인딩

public class TreeMapSkill 
{ 
    public string skill { get; set; } 
} 

public class TreeMapping 
{ 
    public string groupName { get; set; } 

    public List<TreeMapSkill> skillNames { get; set; } 

    public TreeMapping() 
    { 
     skillNames = new List<TreeMapSkill>(); 
    } 
} 

public class TreeMappingList 
{ 
    public List<TreeMapping> mapping { get; set; } 

    public TreeMappingList() { } 

    public TreeMappingList(Dictionary<string, List<string>> map) 
     : base() 
    { 
     this.mapping = new List<TreeMapping>(); 

     foreach (string key in map.Keys) 
     { 
      TreeMapping tMap = new TreeMapping(); 
      tMap.groupName = key; 
      foreach (string val in map[key]) 
       tMap.skillNames.Add(new TreeMapSkill() { skill = val }); 
      this.mapping.Add(tMap); 
     } 
    } 

사전 : 그러나 나머지 항목은 XAML이 결합지고 클래스는 여기

<phone:PanoramaItem Header="Skill Sheet"> 
    <ListBox Name="SkillSheet" ItemsSource="{Binding}"> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel/> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <toolkit:ExpanderView Header="{Binding}" 
             ItemsSource="{Binding}" 
             IsNonExpandable="False"> 
        <toolkit:ExpanderView.HeaderTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding groupName}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" LineHeight="{StaticResource LongListSelectorGroupHeaderFontSize}" /> 
         </DataTemplate> 
        </toolkit:ExpanderView.HeaderTemplate> 

        <toolkit:ExpanderView.ExpanderTemplate> 
         <DataTemplate> 
          <TextBlock Text="Test" /> 
         </DataTemplate> 
        </toolkit:ExpanderView.ExpanderTemplate> 


        <!--This is the area that is not getting databound--> 
        <toolkit:ExpanderView.ItemTemplate> 
         <DataTemplate> 
          <ListBox ItemsSource="{Binding skillNames}"> 
           <ListBox.ItemTemplate> 
            <DataTemplate> 
             <TextBlock Text="{Binding skill}" /> 
            </DataTemplate> 
           </ListBox.ItemTemplate> 
          </ListBox> 
         </DataTemplate> 
        </toolkit:ExpanderView.ItemTemplate> 
       </toolkit:ExpanderView> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</phone:PanoramaItem> 

그리고합니다 (ExpanderTemplate 제외)가 제대로되어 설정되어 있지 않습니다 특정 그룹과 관련된 기술 목록 일뿐입니다. 추가 참조가 필요한 경우 샘플 객체를 제공 할 수도 있습니다.

답변

3

확장자 ItemTemplate 안에 ListBox을 추가하는 이유는 무엇입니까? 이미 컨트롤 컬렉션이므로 ListBox이 필요하지 않습니다. DataTemplate을 안에 넣어주세요.

<toolkit:ExpanderView.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding skill}" /> 
    </DataTemplate> 
</toolkit:ExpanderView.ItemTemplate> 

두 번째 것은 당신이 확장기에 대한 ItemSource 특성의 바인딩의 속성 경로를 지정해야합니다.

<toolkit:ExpanderView Header="{Binding}" 
         ItemsSource="{Binding skillNames}" 
         IsNonExpandable="False"> 
+0

감사합니다. 내가 필요한 것이었습니다. –

관련 문제