2011-10-06 74 views
5
<!-- GroupHeaderStyle --> 
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type GroupItem}"> 
       <Expander IsExpanded="False" Margin="15,0,0,0"> 
        <Expander.Header> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding ????????????}"/> 
          <TextBlock Text="-->"/> 
          <TextBlock Text="{Binding Name}"/> 
         </StackPanel> 
        </Expander.Header> 
        <ItemsPresenter /> 
       </Expander> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

在上面的代码中,我希望显示用于分组的属性名称。 例如性别 - >男孩;性别 - >女孩。如何在wpf中的组标题中显示属性名称

public class Test 
{ 
    string gender; 
    public string Gender 
    { 
     get { return gender; } 
     set { gender = value; } 
    } 
} 

我应该提供什么????????????在上面的xaml?

另外,请让我知道是否有任何好书或链接,解释了ListCollectionView分组的内部细节。

回答

1

DataContext应该是CollectionViewGroup的一个实例,它将Name属性设置为“组”(即Gender的值)。但是CollectionViewGroup与它来自哪个属性之间没有关联。技术上,该物业可能是多层次的。

唯一不错的选择是对包含所有需要的信息的另一个属性进行排序。 CollectionViewGroup.Name属性是一个对象,而不是一个字符串。所以,你可以这样做:

​​

,然后访问它像这样:

<!-- GroupHeaderStyle --> 
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type GroupItem}"> 
       <Expander IsExpanded="False" Margin="15,0,0,0"> 
        <Expander.Header> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding Name.Title}"/> 
          <TextBlock Text="-->"/> 
          <TextBlock Text="{Binding Name.Gender}"/> 
         </StackPanel> 
        </Expander.Header> 
        <ItemsPresenter /> 
       </Expander> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

这是基本的想法,但你可以做GenderGroup更通用。因此,而不是硬编码"Gender"你可以通过它有一个参数。

+0

谢谢CodeNaked的答复... 这是否意味着我不能得到任何直接的方式显示在标题中的属性名称...? –

+0

@SudhakarSingh - 我添加了唯一可以考虑我的答案的工作。 – CodeNaked

相关问题