2010-11-06 23 views
2

Quelqu'un peut-il réécrire ce code XAML en code C#?Réécrire le code XAML DataGrid-GroupStyle en code C#

<DataGrid.GroupStyle> 
       <GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}"> 
        <GroupStyle.Panel> 
         <ItemsPanelTemplate> 
          <DataGridRowsPresenter/> 
         </ItemsPanelTemplate> 
        </GroupStyle.Panel> 
       </GroupStyle> 
</DataGrid.GroupStyle> 

J'ai essayé, mais cela n'a pas fonctionné:

// Setup Grouping 
      GroupStyle groupStyle = new GroupStyle(); 
      groupStyle.ContainerStyle.Resources.FindName("GroupHeaderStyle"); 
      groupStyle.Panel = new DataGridRowsPresenter(); 

Can`t obtenir la dernière ligne de travail ...

MISE À JOUR:

// Setup Grouping 
      GroupStyle groupStyle = new GroupStyle(); 
      groupStyle.ContainerStyle.Resources.FindName("GroupHeaderStyle"); 
      groupStyle.Panel = new ItemsPanelTemplate(new FrameworkElementFactory(typeof(DataGridRowsPresenter))); 
+0

a vu que vous avez mis votre question alors que je répondais, vous l'avez travail? –

Répondre

1

Cela devrait le faire :)

FrameworkElementFactory datagridRowsPresenter = new FrameworkElementFactory(typeof(DataGridRowsPresenter)); 
ItemsPanelTemplate itemsPanelTemplate = new ItemsPanelTemplate(); 
itemsPanelTemplate.VisualTree = datagridRowsPresenter; 
GroupStyle groupStyle = new GroupStyle(); 
groupStyle.Panel = itemsPanelTemplate; 
dataGrid.GroupStyle.Add(groupStyle); 

Uri resourceLocater = new Uri("/YourAssemblyName;component/SubDirectory/YourFile.xaml", System.UriKind.Relative); 
ResourceDictionary resourceDictionary = (ResourceDictionary)Application.LoadComponent(resourceLocater); 
groupStyle.ContainerStyle = resourceDictionary["GroupHeaderStyle"] as Style; 
+0

votre code est correct MAIS ma ressource "GroupHeaderStyle" est définie dans un autre fichier XAML. Le code que vous m'avez donné se trouve dans un fichier de contrôle personnalisé .cs. Comment auriez-vous accès à la ressource ... ok je fais une question supplémentaire de c'est mieux ... – Elisabeth

+0

mis à jour ma réponse, quelque chose de similaire à cela en fonction de l'assemblage et du répertoire –

0

Ce lien doit être utile: http://www.netframeworkdev.com/windows-presentation-foundation-wpf/setting-an-itemscontrolpanels-content-from-code-86898.shtml

BTW, vous voulez peut-être

groupStyle.ContainerStyle = Resources.FindName("GroupHeaderStyle"); 

au lieu de

groupStyle.ContainerStyle.Resources.FindName("GroupHeaderStyle"); 

Edit:
afin d'obtenir le conteneur approprié, vous devez obtenir des ressources. Ce sont des ressources Window ou les ressources à l'échelle de l'application. Je suppose que Application.Current.Resources.FindName("GroupHeaderStyle"); devrait trouver les ressources correctes, sauf si vous faites quelque chose de spécial.

+0

ah oui posté vieux code ... – Elisabeth

+0

mis à jour ma question avec un nouveau code: Comment puis-je créer un ContainerStyle parce que c'est NULL? drôle je peux créer un style et l'assigner à ContainerStyle Je pensais qu'il prend des instances de ContainerSTyle seulement ... – Elisabeth

+0

@Lisa: mis à jour ma réponse, aussi. – Vlad