是否有可能在一个ListView中生成一个ListView,如果是的话,甚至可以将数据绑定到这两个方面吗?我已经试过了,但是它不起作用,第一个列表是我想要的,但是第二个列表没有显示。
“守则”看起来有点像这样:
<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>C#
listA.ItemsSource = timebooking.TimeBookingDataPeriod.TimeBookingData;希望有人能帮我:)
发布于 2015-10-22 09:27:35
首先,要么选择绑定ItemSource={Binding Item},要么在代码listA.ItemsSource = ...中设置一个覆盖另一个的ItemSource。因此,我将忽略这样一个事实,即您试图在代码中设置它,并使用绑定(这意味着您的视图中设置了一个数据文本)。
<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>为了清晰起见,我将您的第一个ItemSource更改为WeekDays,将第二个ItemSource更改为TimesOfDay。这说明了绑定和数据文本的工作方式。
每个ListView都是一个新级别的对象。因此,为了使我的示例工作,您需要遵循以下类结构,而不是我将简化代码,只使用属性(而您应该正确地为UI更新实现INotifyPropertyChanged )。
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; }
}如果要使用页面视图模型中的2个属性,则必须在ListB中使用元素绑定。但这仅适用于场景,因为内部列表视图中的项与外部列表视图中的项不相关。
{Binding ElementName=ListA, Path=DataContext.ItemsForB}发布于 2015-10-22 09:21:57
创建列表:
ObservableCollection<ClassB> list = new ObservableCollection<ClassB>();Init清单:
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;和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>https://stackoverflow.com/questions/33276759
复制相似问题