Ok parfois la solution est sous mon nez, mais je lutte pour le voir ...
Alors, voici ma solution:
<Grid>
<Grid >
<UserControl Content="{Binding Path=CurrentViewModel}"/>
</Grid>
<simpleChildWindow:ChildWindow IsOpen="{Binding OpenChildWindows}"
Title="{Binding TitleChildWindows}"
Content="{Binding CurrentWindowsViewModel }"/>
</Grid>
le CurrentWindowsViewModel est binded à un UserControl qui intègre parfaitement dans la propriété Content de mon S impleChildWindows.
Cependant je dois lier toutes les propriétés de ChildWindows au Viewmodel qui "hébergent" mes childwindows ("Title", "IsOpen" etc.).
Tous les ChildWindows ViewModel héritent d'un modèle de classe (qui hérite évidemment de ViewModelBase) avec un titre et peut-être d'autres propriétés spécifiques à ChildWindows.
Je communique par la lumière MVVM Messenger pour dire le « hôte » qui ViewModel pour afficher son nom, puis je lis son « titre » et ouvrez Windows par le « IsOpen » propriétée:
private void ReceiveMessage(EnumViewModelNames viewName)
{
var selectedViewModel = ViewModelList.Where(x => x.ViewModelName == viewName).SingleOrDefault();
if (selectedViewModel is TemplateWindowsViewModel)
{
TitleChildWindows = (selectedViewModel as TemplateWindowsViewModel).Title;
OpenChildWindows = true;
CurrentWindowsViewModel = (selectedViewModel as TemplateWindowsViewModel);
}
else if (selectedViewModel != null)
{
CurrentViewModel = selectedViewModel;
}
Messenger.Default.Unregister<EnumViewModelNames>(this, (action) => ReceiveMessage(action));
}
De cette façon, je suis capable d'ouvrir le childWindows à partir du "CurrentViewModel" ou du "MainViewModel".
Cela fonctionne plutôt bien et la vue est simplement un Usercontrol standard lié à un DataContext dans ViewModelLocator. Désolé, Heorhiy Pavlovych, j'ai vu que vous essayiez dur, mais nous avons mal compris ...
Bonjour Speuline, Ce message est ancien, mais pour moi c'est nouveau :), j'ai le même problème, mais je n'arrive pas à le faire fonctionner. Pouvez-vous s'il vous plaît me donner un exemple de votre exemple de travail. Meilleures salutations. Jolynice – jolynice
Bonjour, utilisez-vous la bibliothèque SimpleChildWindows? – Speuline
Bonjour Speuline, Oui j'utilise SimpleChildWindows Library. Je suis novice avec WPF :(, pouvez-vous m'aider s'il vous plait Merci – jolynice