2010-06-10 4 views
2

J'utilise MVVM dans une application Silverlight. J'utilise donc PagedCollectionView en tant que propriété de mon modèle View pour le lier à un ItemSource DataGrid. Mais j'ai cette exigence: "tous les groupes dans la grille devraient être réduits lorsque le contrôle de l'utilisateur est chargé.". Comme j'utilise une collection Page View I utilisé ce code:Comment puis-je réduire les groupes Silverlight DataGrid à l'aide de MVVM?

 this.PinesView = new PagedCollectionView(this.Pines); 
    PinesView.GroupDescriptions.Add(new PropertyGroupDescription("Operador"));       
    PinesView.GroupDescriptions.Add(new PropertyGroupDescription("Marca")); 

Maintenant, j'ai le code pour réduire les groupes, mais le seul morceau de code que j'ai trouvé a besoin pour fonctionner sur l'interface utilisateur, il est donc un peu difficile pour le lier à mon ViewModel parce que cette collection est remplie Async, donc je ne sais pas comment communiquer sur la collection est déjà rempli à l'interface utilisateur pour exécuter ce code; ou encore mieux, comment envoyer cette instruction de réduction de mon ViewModel à l'interface utilisateur.

Pourriez-vous s'il vous plaît aide-moi?

Répondre

1
public View() 
{ 
InitializeComponent(); 
datagrid.LoadingRowGroup += new EventHandler<DataGridRowGroupHeaderEventArgs>(datagrid_LoadingRowGroup); 
} 

void datagrid_LoadingRowGroup(object sender, DataGridRowGroupHeaderEventArgs e) 
{ 
datagrid.LoadingRowGroup -= datagrid_LoadingRowGroup; 

foreach(CollectionViewGroup group in (datagrid.ItemsSource as PagedCollectionView).Groups) 
{ 
    datagrid.CollapseRowGroup(group, true); 
} 
} 
+0

+1 Cela fonctionne, même si ce n'est pas techniquement MVVM. – McGarnagle