2010-07-07 5 views
0

Je commencerai en disant que j'essaie de suivre MVVM aussi strictement que possible, donc je voudrais faire ce qui suit en utilisant uniquement la liaison.Partage WPF configuration de colonne DataGrid (modèle? Style?)

J'ai plusieurs DataGrids montrant différentes ObservableCollections du même type de données. Comment puis-je définir une fois quelles colonnes et leurs chemins de liaison apparaîtront sur tous les DataGrids?

Il ne semble pas que je puisse définir un style pour DataGrid.Column. L'objectif est que tous les DataGrids affichent les mêmes informations DataGrid.Column, mais en n'en conservant qu'une seule copie.

Des idées?

Répondre

1

Définissez votre DataGrid en tant que ressource.

Ensuite, vous pouvez « référence » le DataGrid dans plusieurs domaines de votre fenêtre ou une application comme ceci:

<ContentControl Content="{StaticResource myDataGrid}"></ContentControl> 

Vous pouvez modifier le DataContext du ContentControl afin que les DataGrids seront liés aux différentes sources de données .

+0

Juste pour clarifier, dans l'exemple de code ci-dessus, je suppose que le DataGrid a une clé de 'myDataGrid'. – ChrisNel52

+0

Comment est-ce que je pourrais placer des paramètres qui peuvent différer parmi les DataGrids, tels que HeadersVisibility? – bufferz

+0

Option 1: Si la valeur HeadersVisibility est déterminée par une propriété liée, liez la propriété HeadersVisibility à la propriété appropriée et utilisez un ValueConverter pour convertir la valeur de la propriété en valeur de HeadersVisiblity correcte. Option 2: créez un UserControl au lieu de définir le DataGrid en tant que ressource. Dans votre UserControl, définissez votre DataGrid et certaines propriétés de dépendance qui peuvent être utilisées pour définir la valeur HeadersVisibility correcte. – ChrisNel52

Questions connexes