GroupBox标题未显示

时间:2015-02-25 20:36:46

标签: c# wpf xaml

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

表示我的数据:

<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属性:

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

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

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

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

property string Channel {get; set;}
property string Bit {get; set;}
property string Name {get; set;}
property string Attribute {get; set;}

XAML资源标题:

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

XAML:

<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>

1 个答案:

答案 0 :(得分:0)

针对每个DataContext

GroupItem将为CollectionViewGroup类型,其中包含有关ItemsName等每个群组的信息。您需要将组标题中的绑定更改为Name,这将是按

分组的值
<GroupBox.Header>
    <TextBlock Text="{Binding Name}" FontWeight="Bold" FontSize="16" />
</GroupBox.Header>