在带有 XAML 的 ListView ItemTemplate 中使用 ItemsControl
Using an ItemsControl inside of a ListView ItemTemplate with XAML
所以,有点疯狂的要求。我需要一个项目列表,我打算为它使用 ListView
,但在每个元素内,我需要另一个 "List" 可以水平扩展的可以这么说。
这是我要实现的基本想法的粗略图:
对于我的代码,这是我尝试过的方法,但它不起作用。 (是的,我故意不使用绑定,所以我可以使用设计视图让一切看起来正确)
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Grid.IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="KpiColumn0" />
<ColumnDefinition Width="Auto" SharedSizeGroup="KpiColumn1" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="0">
<TextBlock Text="Test" />
<TextBlock Text="Test" FontSize="8" Margin="0,-4,0,0" />
</StackPanel>
<TextBlock Grid.Row="0" Grid.Column="2" Text="Test" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Test" />
<TextBlock Grid.Row="1" Grid.Column="2" Text="Test" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Items>
<MenuItem />
</ListView.Items>
</ListView>
我如何使用 ListView
在其每个项目中保存一个项目列表,根据 List
中每个 ListItem
中的元素数量水平扩展] 绑定到?
将此添加到您的内部 ItemsControl
,项目将以水平对齐方式显示。
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
请注意,您将无法为此使用设计器视图。您需要删除您拥有的 ListView.Items
,而是使用绑定或代码隐藏来让它在 运行.
时显示
如果你给 ListView
一个 Name
of LV
:
这样的事情应该有效
LV.ItemsSource = new List<List<int>>
{
new List<int> {1,2,3,4, },
new List<int> {1,2,3,4, }
};
所以,有点疯狂的要求。我需要一个项目列表,我打算为它使用 ListView
,但在每个元素内,我需要另一个 "List" 可以水平扩展的可以这么说。
这是我要实现的基本想法的粗略图:
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Grid.IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="KpiColumn0" />
<ColumnDefinition Width="Auto" SharedSizeGroup="KpiColumn1" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="0">
<TextBlock Text="Test" />
<TextBlock Text="Test" FontSize="8" Margin="0,-4,0,0" />
</StackPanel>
<TextBlock Grid.Row="0" Grid.Column="2" Text="Test" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Test" />
<TextBlock Grid.Row="1" Grid.Column="2" Text="Test" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Items>
<MenuItem />
</ListView.Items>
</ListView>
我如何使用 ListView
在其每个项目中保存一个项目列表,根据 List
中每个 ListItem
中的元素数量水平扩展] 绑定到?
将此添加到您的内部 ItemsControl
,项目将以水平对齐方式显示。
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
请注意,您将无法为此使用设计器视图。您需要删除您拥有的 ListView.Items
,而是使用绑定或代码隐藏来让它在 运行.
如果你给 ListView
一个 Name
of LV
:
LV.ItemsSource = new List<List<int>>
{
new List<int> {1,2,3,4, },
new List<int> {1,2,3,4, }
};