2017-02-12 3 views
0

등급을 표시 할 수있는 학교 앱을 만들고 있습니다. 내가 3 개의 ListView가 나는 "제목"목록보기 목록 내부 목록에 목록

subjects = new ObservableCollection<Subject>(); 

의 유형에서 ObservableCollection에이

public class Rootobject 
{ 
    public List<Subject> subjects{ get; set; } 
} 

public class Subject 
{ 
    public String name { get; set; } 
    public int id { get; set; } 
    public String teacher { get; set; } 
    public GradeSet wirtten { get; set; } 
    public GradeSet spoken { get; set; } 
    public float average { get; set; } 
} 

public class GradeSet 
{ 
    public float counts { get; set; } 
    public List<Grade> grades { get; set; } 
    public float average { get; set; } 
} 

public class Grade 
{ 
    public string name { get; set; } 
    public string grade { get; set; } 
} 

: 나는 다음과 같은 자료 구조를 가지고있다. 하나는 모든 과목을 보여줍니다 (이름 & 선생님). 그건 이미 작동합니다. 내가 바인딩 방법 : 다른이 개의 ListView에서

<ListView Name="SubjectsListView" IsItemClickEnabled="True" ItemsSource="{x:Bind subjects}" ItemClick="FacherListView_ItemClick"> 
    <ListView.ItemTemplate> 
     <DataTemplate x:DataType="data:Subject"> 
      <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="*" /> 
        <RowDefinition Height="*" /> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="Auto" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Text="{x:Bind name}" FontSize="20" Margin="4,0,0,0" /> 
       <TextBlock Text="{x:Bind teacher}" Grid.Row="1" Margin="4,4,0,0" /> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

을, 처음에, 나는 두 번째에, 나는 (구술 성적을 표시 할, 서면 등급 (이름 & 등급 자체를) 표시 할 이름 & 등급 자체). 쓰여지고 말한 ListView ListView는 똑같아 보이지만 등급과 이름을 묶는 방법은 무엇입니까? 이리스트 뷰입니다 :

<ListView Name="gradeView" Grid.Column="0" HorizontalContentAlignment="Stretch" Grid.Row="2" SelectionMode="None"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid Margin="4"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition /> 
        <ColumnDefinition Width="Auto" /> 
       </Grid.ColumnDefinitions> 
       <StackPanel Orientation="Vertical"> 
        <TextBlock Name="GradeName" Text="The name of the grade" FontSize="20" FontWeight="Bold" /> 
        <TextBlock Name="GradeName" Text="the grade (B+)" FontSize="20" /> 
       </StackPanel> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

답변

1

을 주제 당 서면 및 음성 등급이 있기 때문에 t

<ListView Name="gradeView" Grid.Column="0" HorizontalContentAlignment="Stretch" Grid.Row="2" SelectionMode="None" 
        ItemsSource="{Binding SelectedItem.wirtten.grades, ElementName=SubjectsListView}"> 
    <ListView.ItemTemplate> 
     <DataTemplate x:DataType="data:Grade"> 
      <Grid Margin="4"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition /> 
        <ColumnDefinition Width="Auto" /> 
       </Grid.ColumnDefinitions> 
       <StackPanel Orientation="Vertical"> 
        <TextBlock Name="GradeName" Text="{x:Bind name}" FontSize="20" FontWeight="Bold" /> 
        <TextBlock Name="GradeName" Text="{x:Bind grade}" FontSize="20" /> 
       </StackPanel> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

그것은 거의이다 : 당신은 "SubjectsListView"의 SelectedItem 속성에 "gradeView"의 ItemsSource 속성을 바인딩 할 수 있습니다 그는 셋째로 ListView과 동일합니다. 그냥 바인딩 ItemsSource의 경로를 변경 :

<ListView Name="gradeView2" Grid.Column="0" HorizontalContentAlignment="Stretch" Grid.Row="2" SelectionMode="None" 
        ItemsSource="{Binding SelectedItem.spoken.grades, ElementName=SubjectsListView}"> 

두 번째와 세 번째 ListView의는 채워 져야합니다 첫 번째 ListView에 해당하는 주제를 선택한다.

0

이 검증되지 않은,하지만이 같은 성적을 표시하는 중첩 된 ListView를 추가하려고 할 수 있습니다

<ListView Name="SubjectsListView" 
      IsItemClickEnabled="True" 
      ItemsSource="{x:Bind subjects}" 
      ItemClick="FacherListView_ItemClick"> 
    <ListView.ItemTemplate> 
     <DataTemplate x:DataType="data:Subject"> 
      <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="*" /> 
        <RowDefinition Height="*" /> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="Auto" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Text="{x:Bind name}" 
          FontSize="20" 
          Margin="4,0,0,0" /> 


       <ListView IsItemClickEnabled="True" 
          ItemsSource="{x:Bind wirtten.grades}" 
          Grid.Row="1" 
          Margin="4,4,0,0"> 
        <ListView.ItemTemplate> 
         <DataTemplate x:DataType="data:Grade"> 
          <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="*" /> 
            <RowDefinition Height="*" /> 
           </Grid.RowDefinitions> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="*" /> 
            <ColumnDefinition Width="Auto" /> 
           </Grid.ColumnDefinitions> 
           <TextBlock Text="{x:Bind name}" 
              FontSize="20" 
              Margin="4,0,0,0" /> 
           <TextBlock Text="{x:Bind grade}" 
              Grid.Row="1" 
              Margin="4,4,0,0" /> 
          </Grid> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 



      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView>