gpt4 book ai didi

c# - DataTemplate 内的 DataTemplate - ListBox 内的 ListBox

转载 作者:行者123 更新时间:2023-11-30 22:38:25 26 4
gpt4 key购买 nike

我想在 dataTemplate 中使用 dataTemplale。我想像这样在列表框中显示数据:

<RoomName>
<Kid Name>
<Kid Name>
<RoomName>
<Kid Name>
<RoomName>
<Kid Name>
<Kid Name>
<Kid Name>

这就是我得到的。它不起作用。

class Room
{
ObservableCollection<kid> Kids = new Ob...
}

class School
{
ObservableCollection<Room> Rooms = new Ob...
}

class kid
{
Name;
Size;
(...)
}

这是我的代码绑定(bind):

School BigSchool = new School();
MainListBox.DataContext = BigSchool;

这是我的窗口 XAML:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Rapideo_Client" mc:Ignorable="d"
x:Class="Rapideo_Client.MainWindow"
Title="Client" SnapsToDevicePixels="True" Height="400" Width="625">
<Window.Resources>
<DataTemplate x:Key="kidTemplate" DataType="Kid">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Path=Name}" FontWeight="Bold"></TextBlock>
<Label Content="{Binding Path=Size}"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="roomTemplate" DataType="Room">
<StackPanel Orientation="Vertical">
<Label Content="{Binding Path=Kids.Count}"/>
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" ItemsSource="{Binding Path=Kids}" ItemTemplate="{DynamicResource kidTemplate}" />
</StackPanel>
</DataTemplate>
</Window.Resources>

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Visible" x:Name="MainListBox" Grid.Column="1" ItemsSource="{Binding Rooms}" ItemTemplate="{DynamicResource roomTemplate}" />

</Window>

最佳答案

为什么不直接使用带分组的 ListView?然后,您可以将单个 ListView 与一个用于项目的数据模板和一个用于组的数据模板一起使用。只需在 ListView 上设置一个 GroupStyle,它就会完全按照您的要求执行。

一个例子:

<DataTemplate x:Uid="DataTemplate_4" x:Key="MetadataGroupDisplayTemplate">
<TextBlock x:Uid="TextBlock_4" Text="{Binding Path=RoomName}" FontWeight="Bold" Margin="0,5,0,0"/>
</DataTemplate>
GroupStyle gs = new GroupStyle();
gs.HeaderTemplate = FindResource("MetadataGroupDisplayTemplate") as DataTemplate;
MyListView.GroupStyle.Add(gs);

关于c# - DataTemplate 内的 DataTemplate - ListBox 内的 ListBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6134808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com