Plusieurs contextes de données en vue

J’ai essayé plusieurs fois de trouver une réponse dans les messages, mais pas encore trouvée (du moins dans ce que je comprends depuis assez nouveau pour WPF).

Je définis un contexte de données dans le constructeur de vue:

this.DataContext = viewModel; 

J’aimerais utiliser plusieurs contextes de données dans une seule vue, si possible? J’ai entendu plusieurs réponses incohérentes à cela d’autres. L’objective est que j’ai besoin d’accéder à des propriétés dans plusieurs modèles de vues. Par exemple, ma vue XAML est utilisée dans les cas suivants:

     

Ce serait formidable si je pouvais explicitement référencer chaque propriété dans le modèle de vue approprié.

Remarque: il existe plusieurs modèles de vues basés sur des fenêtres superposées dans la fenêtre principale. Ils deviennent actifs en fonction de sélections de type assistant effectuées par l’utilisateur.

La solution la plus simple que j’ai trouvée consiste à avoir un ViewModel contenant les autres ViewModels en tant que Properties . Ensuite, la vue peut accéder aux propriétés qu’il souhaite de tous les différents modèles de vue …

Pour illustrer cela, vous pouvez avoir un VMContainer:

 public class VMContainer { public FirstViewModel VM1 { get; set; } public SecondViewModel VM2 { get; set; } } 

Maintenant, dans votre vue, définissez votre DataContext sur une instance d’un VMContainer lequel vous avez déjà défini les propriétés spécifiques de la machine virtuelle dans …

Ensuite, vous pouvez faire quelque chose comme ça en XAML

   

Il est à noter que vous ne devez pas créer une nouvelle classe VMContainer rien que pour cela. Vous pouvez également simplement append une nouvelle propriété dans une machine virtuelle existante pour cet autre ordinateur (si cela est possible / logique en fonction de ce que représente votre ordinateur virtuel).