2016-11-15 5 views
1

Я показываю рабочие места. Работа у государства, как это:Проблема со связыванием в DataGrid GoupStyle

public enum JobState 
{ 
    Done, 
    Running, 
    Overdue, 
    Disabled 
} 

При отображении рабочих мест в моем DataGrid я их группе State, которая работает, как ожидалось.

Я следовал за этим example. Проблема в том, что я хотел бы добавить заголовок с Name из State в каждый раздел группировки.

Я просто не уверен, что именно есть DataContext of GroupItem.

Может быть, RelativeSource помогает? - Я не смог это сделать ... никаких рекомендаций?


<DataGrid ItemsSource="{Binding Path=JobCollectionView}" [..]> 
    <DataGrid.GroupStyle> 
     <GroupStyle> 
      <GroupStyle.HeaderTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Path=State}" /> 
       </DataTemplate> 
      </GroupStyle.HeaderTemplate>     
      <GroupStyle.ContainerStyle> 
       <Style TargetType="{x:Type GroupItem}"> 
        <Setter Property="Template"> 
         <Setter.Value> 
         <ControlTemplate TargetType="{x:Type GroupItem}"> 
          <Expander IsExpanded="True"> 
            <Expander.Header> 
            <StackPanel Orientation="Horizontal"> 
        //Error is here:  <TextBlock Text="{Binding Path=StateDescription}" /> 
             <TextBlock Text="{Binding Path=ItemCount}"/> 
             <TextBlock Text=" Jobs"/> 
               </StackPanel> 
             </Expander.Header> 
            <ItemsPresenter /> 
            </Expander> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
      </GroupStyle.ContainerStyle> 
    </GroupStyle> 
</DataGrid.GroupStyle> 

ответ

1

DataContext из GroupItem является внутренний класс с именем CollectionViewGroupInternal. Вы уже знаете, что количество элементов представлено ItemCount на этом классе. Остальная часть головоломки - имя группы представлена ​​свойством Name :) Так как это просто перечисление в вашем случае - вы можете напрямую связать это свойство Name (оно содержит экземпляр вашего перечисления JobState).

+0

thx. Я запутался в том, что в Rutorial также было свойство Name и RowLevel. –