2011-10-06 3 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

DataContextCollectionViewGroupのインスタンスにする必要があります。これは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

関連する問題