Est-il possible de lier deux données différentes à la même colonne DataGrid. Dites si j'ai la classe A qui a la propriété p1 et j'ai une autre classe B avec la propriété p2. Est-il possible de lier p1 et p2 à la même colonne de DataGrid?Liaisons multiples à la colonne DataGrid
Répondre
Quelque chose comme ceci:
<StackPanel>
<TextBlock Text="{Binding ClassAProperty}"/>
<TextBlock Text="{Binding ClassBProperty}"/>
</StackPanel>
fonctionnera, tant que les classes ne possèdent pas de propriétés avec le même nom. Mais c'est une sorte de hack laid, et bonne chance de trouver des erreurs de liaison réelles parmi toutes les fausses erreurs de liaison que cette approche va générer.
Le mappage des propriétés de chaque type sur des colonnes doit être installé quelque part, mais il n'est pas nécessaire de le faire en XAML, et ce n'est pas ce que je dirais. Je le ferais dans mon modèle de vue. En supposant que je n'ai pas déjà vue classes de modèle pour mes objets ClassA et ClassB (et que je ne veux pas les créer), je mettre en œuvre quelque chose comme ceci:
public class DataGridHelper
{
public Wrapper(object o)
{
ClassA a = o as ClassA;
if (a != null)
{
Column1 = a.Property1;
Column2 = a.Property2;
...
}
ClassB b = o as ClassA;
if (b != null)
{
Column1 = b.Property1;
Column2 = b.Property2;
...
}
public object Column1 { get; private set; }
public object Column2 { get; private set; }
}
... puis lier les colonnes DataGrid
à une collection d'objets DataGridHelper
.
Si je ne ont cours ClassAViewModel
et ClassBViewModel
, je venais de mettre en œuvre Column1
, Column2
, propriétés, etc. dans les deux. Ce serait la voie à suivre si j'avais besoin de prendre en charge la liaison bidirectionnelle et la validation.
Vous pouvez utiliser une colonne DataGridTemplate qui contiendrait deux contrôles différents, chacun lié à une propriété différente.
Le moyen le plus simple de le faire est probablement un MultiBinding. Voici un simple example sur la façon d'utiliser MultiBinding (qui tire parti de la propriété StringFormat, que j'aime).
- 1. JiBXException: liaisons multiples définies pour la classe
- 2. Expressions de liaisons multiples dans une instruction
- 3. comment cacher la colonne DataGrid
- 4. SilverLight - MVVM liant la propriété viewmodel à la colonne datagrid
- 5. colonne Bind WPF DataGrid à un autre
- 6. supprimer la colonne supplémentaire qui vient DataGrid
- 7. WPF DataGrid Colonne ComboBox: Propagating Header Combobox dans la colonne
- 8. multiples comme sur la même colonne DB2
- 9. Onglet Flex DataGrid à cocher de la colonne
- 10. Lier une colonne DataGrid à la propriété ViewModel
- 11. WPF DataGrid Colonne Largeur CodeBehind
- 12. Flex DataGrid Largeur de colonne
- 13. ITemplate et DataGrid Colonne Codebehind
- 14. Ciblage d'une propriété personnalisée avec des liaisons multiples dans Silverlight
- 15. WPF DataGrid Bouton Colonne Désactiver
- 16. WPF: Liaisons de commande pour les boutons dans les DataGrid
- 17. Dojo DataGrid - colonne empêchant redimensionne
- 18. Modifier dynamiquement la largeur de la colonne Datagrid dans FLEX
- 19. WPF Datagrid - Définit la visibilité de la colonne par ligne
- 20. WPF DataGrid - Masquage d'une colonne à l'aide d'un CheckBox
- 21. EF4 à DataGrid avec une combo en colonne Winforms
- 22. Validation de colonne Force DataGrid (WPF)
- 23. ASP.NET Datagrid - masquer une ligne/colonne spécifique
- 24. colonne par défaut de tri de DataGrid
- 25. WPF: liaison de l'en-tête de colonne DataGrid à ViewModel
- 26. MySQL: insertions multiples pour une seule colonne
- 27. PHP résultats des requêtes d'une colonne à colonnes multiples
- 28. Colonne Datagrid Erreur de génération de tri
- 29. WPF - Aide sur la colonne ComboBox de DataGrid dans UserControl
- 30. Dojo DataGrid et redimensionnement de colonne
Yea StackPanel est en désordre. Créer un DataGridHelper ressemble au chemin à parcourir. Merci! – Reflux