2017-02-12 12 views
0

私はあなたの成績を表示することができますスクールアプリを構築しています。私は3つのリストビューを持っている私は、 "件名"リストビュー内のリストにリスト

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; } 
} 

: 私は、次のデータ構造を持っています。 1つはすべての科目(名前&先生)を示しています。それはすでに動作します。第二に、私が話さ成績を(表示する他の2つのリストビューで

<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 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

を主題ごとに書かれたと話さグレードがあるので、あなたは「SubjectsListView」のSelectedItemプロパティに「gradeView」のItemsSourceプロパティをバインドできます。

<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> 

それはほとんどトンであります彼は第3のListViewと同じです。ちょうどItemsSource結合のパス変更:

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

第二及び第三ListView Sを最初ListViewに対応する対象を選択すると、次に読み込まれるべきです。

0

これはテストされていないですが、あなたはこのように、成績を表示するには、ネストされたリストビューを追加してみてください:

<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> 
関連する問題