我是WPF的新手,所以我了解样式和设置员,但是在此方面遇到了麻烦。
我正在使用WPF数据网格,并且需要显示多个分组级别。我希望第二和第三小组的等级比最高等级的缩进更多。
下面的代码将显示组级别,但是将它们显示在另一个组级别的正上方,并且使它们成为嵌套的组级别这一事实无法分辨。
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="True">
<Expander.Header>
<TextBlock Text="{Binding Path=Name}"/>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
如何获得基于级别缩进的组标题?
小智 6
如果将来有任何人遇到这个问题。我能够嵌套组并设置其样式,以便通过执行以下操作使它们不会相互堆叠。
将属性添加到CollectionViewSource:
<Window.Resources>
<CollectionViewSource x:Key="cvs" Source="{Binding TestData}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="TopProperty"/>
<PropertyGroupDescription PropertyName="SubProperty"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
然后,在DataGrid XAML中,您必须指定2个GroupStyle,第二个将用于嵌套组。我在第二组的StackPanel中添加了页边距,以将文本向右推,使其看起来像在适当的列中一样。
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<StackPanel>
<Border Background="#FF959595" BorderBrush="#FF727272" BorderThickness="0,0,0,1" Margin="5,0,0,0">
<StackPanel Height="23" Orientation="Horizontal" Margin="3,0,0,0" Background="#FFE6E6E6">
<TextBlock FontWeight="Bold" Text="{Binding Path=Name}" Margin="5,0,0,0" Width="100" VerticalAlignment="Center"/>
</StackPanel>
</Border>
<ItemsPresenter />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel>
<Border Background="#FF959595" BorderBrush="#FF727272" BorderThickness="0,0,0,1" Margin="5,0,0,0">
<StackPanel Height="23" Orientation="Horizontal" Margin="3,0,0,0" Background="#FFF3F3F3">
<TextBlock FontWeight="Bold" Text="{Binding Path=Name}" Margin="55,0,0,0" Width="100" VerticalAlignment="Center"/>
</StackPanel>
</Border>
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</DataGrid.GroupStyle>
Run Code Online (Sandbox Code Playgroud)
我可以在这里找到更多信息:https : //msdn.microsoft.com/zh-cn/library/ff407126%28v=vs.110%29.aspx
我已经使用 ICollectionView 和 PropertyGroupDescription 来添加分组,但是,您仍然必须使用 XAML 来描述如何显示分组,否则您将不会获得任何分组的 UI 指示。
我对如何设置 XAML 感兴趣,以便可以表示多个级别的分组,最好是每个组级别有某种缩进或类似的东西......
| 归档时间: |
|
| 查看次数: |
10973 次 |
| 最近记录: |