在视图中,设置的项目源到CollectionViewSource本身结合的视图模型动物的集合。该CollectionViewSource可以分组,这样的事:
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Continent" />
</CollectionViewSource.GroupDescriptions>
您还需要设置一组风格上的任何物品控制你有 - 这样的事情
<ItemsControl.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock FontWeight="Bold" FontSize="15"
Text="{Binding Path=Name}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ItemsControl.GroupStyle>
从示例获取的在这页 - http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.groupstyle.aspx
这是设置HeaderTemplate,但如果你玩了一下,你应该能够为每个组设置一个容器样式。
希望这会有所帮助!
更新: 我对此并不太确定,所以我对代码进行了快速打击。假设“切换按钮”是“单选按钮”,这是我想出来的:
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<GroupBox Margin="10" Header="{Binding Name}">
<GroupBox.Content>
<ItemsPresenter />
</GroupBox.Content>
</GroupBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
:
<Grid>
<Grid.Resources>
<CollectionViewSource x:Key="Animals" Source="{Binding}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Continent" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Grid.Resources>
<ItemsControl ItemsSource="{Binding Source={StaticResource Animals}}">
<ItemsControl.GroupStyle>
<x:Static Member="GroupStyle.Default" />
</ItemsControl.GroupStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<RadioButton Content="{Binding Name}" GroupName="{Binding Continent}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
此外,还可以通过更换线<x:Static Member="GroupStyle.Default" />
显示每一组的分组框
但是,单选按钮不会相互排斥(我推测是因为它们被包装在ListItem控件中,或者是使它们成为分组父项的单个子项的其他东西)。如果您想回到更多信息(他们的示例扩展程序显示/隐藏组),则该代码被从MSDN中的GroupStyle条目中窃取/修改:http://msdn.microsoft.com/en-us/library/system.windows.controls.groupstyle.aspx
让我知道如果我完全错过了这一点。
非常感谢! – James
没问题,我希望它有帮助! –
很好的答案!谢谢 – animaonline