2009-10-09 5 views
3

Je vais avoir cette question étrange avec mon groupe de ItemsControl. J'ai la configuration suivante:articles WPF pas visibles lorsque le regroupement est appliqué

<ItemsControl Margin="3" ItemsSource="{Binding Communications.View}" > 
    <ItemsControl.GroupStyle> 
     <GroupStyle> 
      <GroupStyle.ContainerStyle> 
       <Style TargetType="{x:Type GroupItem}"> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="{x:Type GroupItem}"> 
           <Expander> 
            <Expander.Header> 
             <Grid> 
              <Grid.ColumnDefinitions > 
               <ColumnDefinition Width="*" /> 
               <ColumnDefinition Width="Auto" /> 
              </Grid.ColumnDefinitions> 
              <TextBlock Text="{Binding ItemCount, StringFormat='{}[{0}] '}" FontWeight="Bold" /> 
              <TextBlock Grid.Column="1" Text="{Binding Name, Converter={StaticResource GroupingFormatter}, StringFormat='{}Subject: {0}'}" FontWeight="Bold" /> 
             </Grid> 
            </Expander.Header> 
            <ItemsPresenter /> 
           </Expander> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </GroupStyle.ContainerStyle> 
     </GroupStyle> 
    </ItemsControl.GroupStyle> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="Auto" /> 
       </Grid.ColumnDefinitions> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 
       <TextBlock FontWeight="Bold" Text="{Binding Inspector, Converter={StaticResource NameFormatter}, StringFormat='{}From {0}:'}" Margin="3" /> 
       <TextBlock Text="{Binding SentDate, StringFormat='{}{0:dd/MM/yy}'}" Grid.Row="1" Margin="3"/> 
       <TextBlock Text="{Binding Message }" Grid.Column="1" Grid.RowSpan="2" Margin="3"/> 
       <Button Command="vm:CommunicationViewModel.DeleteMessageCommand" CommandParameter="{Binding}" HorizontalAlignment="Right" Grid.Column="2">Delete</Button> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Dans mon ViewModel, j'expose une CollectionViewSource nommée 'Communications'. Je procède à l'ajout d'un groupement boniment comme ceci:

Communications.GroupDescriptions.Add(new PropertyGroupDescription("Subject")); 

Maintenant, le problème que je suis l'expérience est la fin du travail de groupe, mais je ne vois pas tous les éléments à l'intérieur des groupes. Qu'est-ce que je fais mal? Tous les pointeurs seraient très appréciés.

Répondre

1

Je ne peux pas sembler reproduire le problème - je suppose que vous utilisez un CollectionViewSource? C'est peut-être parce que vous vous êtes lié directement à la propriété View.

Voici le code C# je:

public class Communication 
{ 
    public string Subject { get; set; } 
    public string Body { get; set; } 
} 

public partial class Window1 : Window 
{ 
    public Window1() 
    { 
     InitializeComponent(); 

     var source = (CollectionViewSource)Resources["Communications"]; 
     source.Source = new List<Communication>() 
     { 
      new Communication { Subject = "WPF 4.0", Body = "I love what's happening with 4.0"}, 
      new Communication { Subject = "WPF 4.0", Body = "I hear the text rendering is the best feature"}, 
      new Communication { Subject = "Blend 3.0", Body = "Behaviors in Blend 3 change everything"} 
     }; 

     source.GroupDescriptions.Add(new PropertyGroupDescription("Subject")); 
    } 
} 

Voici le XAML - c'est la même que la vôtre, mais avec deux ou trois choses enlevées car je n'ai pas vos convertisseurs ou commandes:

<Window 
    x:Class="GroupStyleDemo.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300" 
    > 
    <Window.Resources> 
     <CollectionViewSource x:Key="Communications" /> 
    </Window.Resources> 
    <Grid> 
     <ItemsControl Margin="3" ItemsSource="{Binding Source={StaticResource Communications}}" > 
      <ItemsControl.GroupStyle> 
       <GroupStyle> 
        <GroupStyle.ContainerStyle> 
         <Style TargetType="{x:Type GroupItem}"> 
          <Setter Property="Template"> 
           <Setter.Value> 
            <ControlTemplate TargetType="{x:Type GroupItem}"> 
             <Expander> 
              <Expander.Header> 
               <Grid> 
                <Grid.ColumnDefinitions > 
                 <ColumnDefinition Width="*" /> 
                 <ColumnDefinition Width="Auto" /> 
                </Grid.ColumnDefinitions> 
                <TextBlock Text="{Binding ItemCount, StringFormat='{}[{0}] '}" FontWeight="Bold" /> 
                <TextBlock Grid.Column="1" Text="{Binding Path=Name}" FontWeight="Bold" /> 
               </Grid> 
              </Expander.Header> 
              <ItemsPresenter /> 
             </Expander> 
            </ControlTemplate> 
           </Setter.Value> 
          </Setter> 
         </Style> 
        </GroupStyle.ContainerStyle> 
       </GroupStyle> 
      </ItemsControl.GroupStyle> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto" /> 
          <ColumnDefinition Width="*" /> 
          <ColumnDefinition Width="Auto" /> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition /> 
          <RowDefinition /> 
         </Grid.RowDefinitions> 
         <TextBlock Text="{Binding Body }" Grid.Column="1" Grid.RowSpan="2" Margin="3"/> 
        </Grid> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 

    </Grid> 
</Window> 
+0

y at-il de toute façon de se lier à un ViewModel CollectionViewSource becuase Je ne peux pas faire référence aux resouces XAML de la machine virtuelle. Et la liaison à la CollectionViewSource ne fonctionne pas sans se lier directement à la .view –

+0

je viens de découvrir que de ma bibliothèque de style est la définition du style ItemsControl et remplace ce que j'avais dans mon code pour ses thats pourquoi il ne fonctionnait pas. J'ai enlevé le style et les choses sont super! Leçon apprise. –

Questions connexes