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

相關問題