关于 c#:GroupBox 标题不显示

GroupBox Header Not Showing

我关注了一个 StackOverflow 问题,该问题有一个指向另一篇文章的链接,关于如何对数据进行分组,但我的标题没有显示。有人可以指出为什么我的标题没有显示在我的数据分组中的问题。我看到的文章和我的标记之间唯一不同的是我的数据格式不同,但我无法控制如何接收它。

我的数据表示:

1
2
3
4
5
6
7
8
<MyDetails xmlns="clr-namespace:MyCompany.Mapping;assembly=Mapping" xmlns:scg="clr-
    namespace:System.Collections.Generic;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <MyDetails.Details>
        <scg:List x:TypeArguments="MyAttributes" Capacity="64">
            <MyAttributes Bit="0" Channel="1" Name="SomeName" IOAttribute="O" />
        </scg:List>
    </MyDetails.Details>
</MyDetails>

我绑定到的 ViewModel 属性:

1
2
ObservableCollection<MyDetails> Channels= new
ObservableCollection<MyDetails>();

MyDetails 类公共属性(定义为 DataMember):

1
List<MyAttributes> Details = new List<MyAttributes>();

MyAttributes 类公共属性(全部定义为 DataMembers):

1
2
3
4
property string Channel {get; set;}
property string Bit {get; set;}
property string Name {get; set;}
property string Attribute {get; set;}

XAML 资源标头:

1
2
3
4
5
<CollectionViewSource x:Key="MyDetails" Source="{Binding Channels[0].Details}">
    <CollectionViewSource.GroupDescriptions>
        <PropertyGroupDescription PropertyName="Channel" />
    </CollectionViewSource.GroupDescriptions>
</CollectionViewSource>

XAML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<ItemsControl ItemsSource="{Binding Source={StaticResource MyDetails}}">
<ItemsControl.GroupStyle>
    <GroupStyle>
        <GroupStyle.ContainerStyle>
            <Style TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type GroupItem}">
                            <GroupBox Margin="10">
                                <GroupBox.Header>
                                <TextBlock Text="{Binding Channel}" FontWeight="Bold" FontSize="16" /> <!-- Does not show -->
                                </GroupBox.Header>
                                <ItemsPresenter />
                            </GroupBox>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GroupStyle.ContainerStyle>
    </GroupStyle>
</ItemsControl.GroupStyle>
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=Bit}" Width="50" />
            <TextBlock Text="{Binding Path=Name}" Width="150" />
            <TextBlock Text="{Binding Path=Attribute}" Width="50" />
        </StackPanel>
    </DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

DataContext 针对每个 GroupItem 将是 CollectionViewGroup 类型,其中包含有关每个组的信息,例如 ItemsName。您需要将组头中的绑定更改为 Name ,这将是由

分组的值

1
2
3
<GroupBox.Header>
    <TextBlock Text="{Binding Name}" FontWeight="Bold" FontSize="16" />
</GroupBox.Header>