View界面
<ItemsControl ItemsSource="{Binding ParentButtons}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1" Margin="5" Padding="5">
<StackPanel>
<!-- 父 Button -->
<Button Content="{Binding ParentName}"
Background="LightBlue"
Height="40"
FontWeight="Bold"/>
<!--子 ItemsControl 生成多个子 Button-->
<ItemsControl ItemsSource="{Binding ChildButtons}" Margin="20,5,5,5">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding ChildName}"
Margin="5"
Width="100"
Background="LightGreen"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Viewmodel 构造函数
ParentButtons = new List<ParentButton>
{
new ParentButton
{
ParentName = "Parent Button 1",
ChildButtons = new List<ChildButton>
{
new ChildButton { ChildName = "Child 1.1" },
new ChildButton { ChildName = "Child 1.2" },
new ChildButton { ChildName = "Child 1.3" }
}
},
new ParentButton
{
ParentName = "Parent Button 2",
ChildButtons = new List<ChildButton>
{
new ChildButton { ChildName = "Child 2.1" },
new ChildButton { ChildName = "Child 2.2" },
new ChildButton { ChildName = "Child 2.3" },
new ChildButton { ChildName = "Child 2.4" }
}
},
new ParentButton
{
ParentName = "Parent Button 3",
ChildButtons = new List<ChildButton>
{
new ChildButton { ChildName = "Child 3.1" },
new ChildButton { ChildName = "Child 3.2" }
}
}
};
定义属性
public List<ParentButton> ParentButtons { get; set; }
public class ParentButton
{
public string ParentName { get; set; }
public List<ChildButton> ChildButtons { get; set; }
}
public class ChildButton
{
public string ChildName { get; set; }
}