效果如图:
关键代码
ListView的DataTemplate是一个单一折叠项的内容
ItemsControl是一个列表的内容,之前列表使用DataGrid,但加载速度慢,所以改为ItemsControl
<ListView Name="listView" HorizontalAlignment="Center" ItemsSource="{Binding }">
<ListView.ItemTemplate>
<DataTemplate>
<Expander Name="expander" Width="1400" ExpandDirection="Down" HorizontalAlignment="Stretch" IsExpanded="True">
<Expander.Header>
<TextBlock Text="{Binding DataModelEdition.TableChineseName}" FontWeight="Bold"/>
</Expander.Header>
<Expander.Content>
<Grid HorizontalAlignment="Stretch" Width="1400">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal" Visibility="{Binding DataModelEdition.RowVisibility}">
<TextBlock Text="单选RadioButton" Margin="0,0,5,0"></TextBlock>
<RadioButton Content="RadioButton选择1" VerticalAlignment="Center" Margin="0,0,3,0" GroupName="{Binding DataModelEdition.GroupName}" IsEnabled="{Binding DataModelEdition.IsCanModify}" IsChecked="{Binding DataModelEdition.OneToOneIsChecked,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></RadioButton>
<RadioButton Content="RadioButton选择2" VerticalAlignment="Center" GroupName="{Binding DataModelEdition.GroupName}" IsEnabled="{Binding DataModelEdition.IsCanModify}" IsChecked="{Binding DataModelEdition.ManyToOneIsChecked,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></RadioButton>
</StackPanel>
<ItemsControl Grid.Row="1" Name="dataList" ItemsSource="{Binding DataModelItems}">
<ItemsControl.Template>
<ControlTemplate TargetType="{x:Type ItemsControl}">
<ControlTemplate.Resources>
<Style TargetType="Border">
<Setter Property="BorderThickness" Value="1"></Setter>