Je travaille actuellement sur un problème dans lequel j'ai besoin d'intégrer un UserControl dans un autre UserControl. Mais, j'ai besoin de déterminer à l'exécution quel UserControl incorporé à instancier. Cela implique pour moi qu'une certaine forme de liaison de données et/ou mécanisme de sélection de modèle doit être invoqué, mais je ne suis pas sûr de savoir comment procéder avec l'approche pure XAML. Si je devais le faire avec du code, je définirais une sorte de contrôle de conteneur dans le UserControl parent, puis dans le code-behind, implémenterais une logique qui instancierait le UserControl enfant approprié et l'insérerait comme contenu dans le conteneur spécifié dans le UserControl parent. Est-ce que cela peut être fait en utilisant seulement XAML, ou est-ce qu'une sorte de code-behind est nécessaire?Sélection d'un UserControl à partir de XAML
Répondre
Si le choix de l'enfant UserControl
est basé sur le type de DataContext
, la meilleure façon de le faire est d'utiliser un ContentControl
avec plusieurs DataTemplate
s dans les ressources:
<ContentControl Content="{Binding SomeProperty"}>
<ContentControl.Resources>
<DataTemplate DataType="{x:Type local:Foo}">
<local:UserControlForTypeFoo />
</DataTemplate>
<DataTemplate DataType="{x:Type local:Bar}">
<local:UserControlForTypeBar />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
Le ContentControl
va choisir le DataTemplate
approprié basé sur le type de SomeProperty
. C'est comme ça qu'on le fait habituellement dans MVVM
Je suppose que vous démarrez avec WPF, Si j'ai raison, ce que vous voulez ici plus d'un ItemsControl en XAML et définir ItemsSource (Collection de DataObjects) à lui, puis définir ItemsControl.ItemsTemplate pour donner DataTemplate approprié de l'objet DataObject . Tout repose sur les données et vous n'avez pas besoin de vous soucier de l'instanciation, WPF fera toutes ces créations visuelles.
Merci, je vais jeter un coup d'oeil à ça. Cela semble un peu contre-intuitif, cependant ... – kmontgom
- 1. XAML ne charge pas UserControl à partir de l'objet ViewModel
- 2. Accéder à un élément XAML à partir d'un autre XAML
- 3. XAML UserControl DataTrigger
- 4. Actualiser Silverlight UserControl via XAML
- 5. Silverlight XAML - UserControl vs Page
- 6. Accès objet XAML à partir du code
- 7. Élément de tableau manquant dans UserControl XAML?
- 8. Liaison à ViewModel à partir de XAML
- 9. Événement propre pour UserControl personnalisé en XAML!
- 10. Modifier le formulaire de Windows à partir de userControl
- 11. Référencement enum défini dans une classe à partir de XAML
- 12. fenêtre ouverte à partir de xaml
- 13. Charger l'image à partir de Xaml
- 14. Méthode de substitution d'un élément dans un UserControl XAML?
- 15. Renvoi d'informations à partir d'un UserControl
- 16. UserControl toujours au-dessus (le plus haut, XAML/WPF)
- 17. Liaison simple de données à partir de code à XAML
- 18. Lier à un UserControl RoutedCommand à partir de la fenêtre parent
- 19. Comment accéder à la propriété ItemsSource d'un DataGrid défini dans UserControl à partir du fichier xaml principal?
- 20. Sélection de résultats à partir de DataSet
- 21. Sélection de lignes à partir de MySQL
- 22. XAML - Comment lier un élément d'un <UserControl> dérivé à un élément de la base <UserControl>?
- 23. Contrôle des tags XAML à partir du code C#
- 24. Comment lier une propriété définie comme usercontrol en XAML?
- 25. Accéder à l'élément WPF (XAML) à partir de F #?
- 26. Comment accéder à MyProject.MySettings.Default.SomeSetting à partir de xaml?
- 27. Accéder à l'objet instancié XAML à partir de C#
- 28. Problème lors du chargement d'un UserControl dans un noeud XAML
- 29. MySql: Sélection à partir de plusieurs tables
- 30. ROR: Sélection à partir de plusieurs tables
Cela ressemble beaucoup plus à ce que je cherche. Merci. – kmontgom