0

私はWPFの初心者です。ViewModel からネストされたリストビューをバインドしようとしています。

私はそれぞれ2つのリストビューの親と子を持っています。私の親リストビューデータテンプレートでは、子リストビューをバインドしたいのですが、それは何かです

asp.net のネストされた gridview のように。誰でもこの問題を解決するのを手伝ってくれませんか。

次のようなデータ表示:

学籍番号名

S101 アザド

数学 3

C# 3

ここで、StudentID,Name の親リストビュー コンテンツとサブジェクトは、StudentID によってフィルター処理される子リストビュー コンテンツです。

ありがとう、

アズ@d

4

1 に答える 1

1
    <Grid>
    <ListView ItemsSource="{Binding Students}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="2"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="5"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="{Binding Name}" Grid.Column="0"/>
                    <TextBlock Text="{Binding RollNo}" Grid.Column="2"/>
                    <ListView ItemsSource="{Binding SubjectAndMarks}" Grid.Row="2" Grid.ColumnSpan="2" Grid.Column="0" BorderThickness="0">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto"/>
                                        <ColumnDefinition Width="5"/>
                                        <ColumnDefinition Width="Auto"/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Text="{Binding Subject}" Grid.Column="0"/>
                                    <TextBlock Text="{Binding Marks}" Grid.Column="2"/>
                                </Grid>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>

    public class SubjectAndMarks 
{
    public string Subject { get; set; }
    public double Marks { get; set; }
}
public class Student 
{
    public string Name { get; set; }
    public int RollNo { get; set; }
    public ObservableCollection<SubjectAndMarks> SubjectAndMarks { get; set; }
}
public class ViewModel //ViewModel
{
     public ObservableCollection<Student> Students { get; set; }
    public ViewModel()
    {
        Students = new ObservableCollection<Student>();
        Students.Add(new Student()
        {
            Name = "Harish",
            RollNo = 1,
            SubjectAndMarks = new ObservableCollection<SubjectAndMarks>()
        {new SubjectAndMarks(){Subject="Maths",Marks=100},new SubjectAndMarks(){Subject="Hindi",Marks=100},
        new SubjectAndMarks(){Subject="Science",Marks=100}}
        });
        Students.Add(new Student()
        {
            Name = "Pankaj",
            RollNo = 2,
            SubjectAndMarks = new ObservableCollection<SubjectAndMarks>()
        {new SubjectAndMarks(){Subject="Maths",Marks=100},new SubjectAndMarks(){Subject="Hindi",Marks=40},
        new SubjectAndMarks(){Subject="Science",Marks=30}}
        });
        Students.Add(new Student()
        {
            Name = "Deepak",
            RollNo = 3,
            SubjectAndMarks = new ObservableCollection<SubjectAndMarks>()
        {new SubjectAndMarks(){Subject="Maths",Marks=90},new SubjectAndMarks(){Subject="Hindi",Marks=50},
        new SubjectAndMarks(){Subject="Science",Marks=60}}
        });
    } 
}
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new ViewModel();   
    }

それが役立つことを願っています。

于 2012-07-29T07:20:49.513 に答える