ListView中的XAML ListView

ListView中的XAML ListView,xaml,listview,win-universal-app,uwp,Xaml,Listview,Win Universal App,Uwp,是否可以在列表视图中创建列表视图,如果可以,是否甚至可以在这两个视图中绑定数据?我已经试过了,但它不起作用。第一个列表显示为我想要的,但第二个列表没有显示 代码看起来有点像这样: <ListView ItemSource="{Binding Item}" x:Name="ListA"> <ListView.ItemTemplate> <DataTemplate> <Grid>

是否可以在
列表视图
中创建
列表视图
,如果可以,是否甚至可以在这两个视图中绑定数据?我已经试过了,但它不起作用。第一个列表显示为我想要的,但第二个列表没有显示

代码看起来有点像这样:

<ListView ItemSource="{Binding Item}" x:Name="ListA">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <TextBlock Text="{Binding Day}"/>
                <ListView x:Name="ListB" ItemSoruce="{Binding Item}">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Time}"/>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
希望sombody能帮我:)

  • 项目来源非项目来源
  • 以下是一个例子:

    public class ClassB
        {
            public string Name { get; set; }
            public ObservableCollection<ClassA>classAList { get; set; }
    
            /// <summary>
            /// Initializes a new instance of the <see cref="ClassB"/> class.
            /// </summary>
            public ClassB()
            {
                Name = String.Empty;
                classAList = new ObservableCollection<ClassA>();
    
            }
        }
    
    和XAML:

    <ListView ItemsSource="{Binding}" x:Name="ListA">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <TextBlock Text="Day"/>
                            <ListView x:Name="ListB" ItemsSource="{Binding classAList}">
                                <ListView.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Caption}"/>
                                    </DataTemplate>
                                </ListView.ItemTemplate>
                            </ListView>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
    
    
    
  • 似乎您想要创建一个分组列表,在这种情况下,最好将gridview与组一起使用:

  • 首先,您应该选择绑定
    ItemSource={binding Item}
    ,或者在code
    listA.ItemSource=…
    中将ItemSource设置为一个覆盖另一个。因此,我将忽略一个事实,即您试图在代码中设置它,并使用绑定(这意味着您在视图中设置了datacontext)

    如果要使用页面viewmodel中的两个属性,则必须在ListB中使用元素绑定。但这仅适用于内部listview中的项与外部listview中的项不相关的场景

    {Binding ElementName=ListA, Path=DataContext.ItemsForB}
    

    现在应该更容易理解了。我为塞尔古·科乔卡鲁感到抱歉,但你的回答更符合我的要求,也为我的错误感到抱歉^^
    ClassB item1 = new ClassB() { Name = "listAItem1" };
                item1.classAList.Add(new ClassA { Caption = "listBItem1" });
                item1.classAList.Add(new ClassA { Caption = "listBItem2" });
                item1.classAList.Add(new ClassA { Caption = "listBItem3" });
                item1.classAList.Add(new ClassA { Caption = "listBItem4" });
                item1.classAList.Add(new ClassA { Caption = "listBItem5" });
    
                list.Add(item1);
    
    
                ClassB item2 = new ClassB() { Name = "listAItem1" };
                item2.classAList.Add(new ClassA { Caption = "listBItem1" });
                item2.classAList.Add(new ClassA { Caption = "listBItem2" });
                item2.classAList.Add(new ClassA { Caption = "listBItem3" });
                item2.classAList.Add(new ClassA { Caption = "listBItem4" });
                item2.classAList.Add(new ClassA { Caption = "listBItem5" });
    
                list.Add(item1);
    
                this.DataContext = list;
    
    <ListView ItemsSource="{Binding}" x:Name="ListA">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <TextBlock Text="Day"/>
                            <ListView x:Name="ListB" ItemsSource="{Binding classAList}">
                                <ListView.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Caption}"/>
                                    </DataTemplate>
                                </ListView.ItemTemplate>
                            </ListView>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
    
    <ListView ItemSource="{Binding WeekDays}" x:Name="ListA">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <TextBlock Text="{Binding Day}"/>
                    <ListView x:Name="ListB" ItemSource="{Binding TimesOfDay}">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Time}"/>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    
    public class SampleViewModel : INotifyPropertyChanged
    {
        public ObservableCollection<WeekDay> WeekDays { get; set; } // first listview
    }
    
    public class WeekDay
    {
        public string Day { get; set; }
        public ObservableCollection<TimeOfDay> TimesOfDay { get; set; } // second listview
    }
    
    public class TimeOfDay
    {
        public string Time { get; set; }
    }
    
    {Binding ElementName=ListA, Path=DataContext.ItemsForB}