Ok иногда решение находится под моим носом, но я изо всех сил, чтобы увидеть его ...
Так вот мое решение:
<Grid>
<Grid >
<UserControl Content="{Binding Path=CurrentViewModel}"/>
</Grid>
<simpleChildWindow:ChildWindow IsOpen="{Binding OpenChildWindows}"
Title="{Binding TitleChildWindows}"
Content="{Binding CurrentWindowsViewModel }"/>
</Grid>
CurrentWindowsViewModel является переплетены в UserControl, который прекрасно вписывается в контентной свойство моего S impleChildWindows.
Однако я должен привязать все свойства ChildWindows к Viewmodel, которые «Host» имеют дочерние окна («Title», «IsOpen» и т. Д.).
Все объекты ChildWindows ViewModel наследуют от шаблона класса (который явно наследуется от ViewModelBase) с титром Title и, возможно, некоторыми другими свойствами, специфичными для ChildWindows.
Я общаюсь через MVVM свет Messenger, чтобы сказать «Host», который ViewModel для отображения его имени, а затем я прочитал его «Название» и откройте Windows, с помощью СВОЙСТВ «IsOpen»:
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));
}
Таким образом, я могу открыть childWindows из «CurrentViewModel» или «MainViewModel».
Он работает очень хорошо, и представление представляет собой просто стандартное Usercontrol, связанное с DataContext в ViewModelLocator.
Извините, Георгий Павлович, я видел, что вы пытались изо всех сил, но мы неправильно поняли ...
Здравствуйте, Speuline, Этот пост старый, но для меня он новый :), у меня такая же проблема, но я не могу добиться успеха. Можете ли вы предоставить мне пример вашего примера работы. С наилучшими пожеланиями. Jolynice – jolynice
Привет, вы используете библиотеку SimpleChildWindows? – Speuline
Здравствуйте, Speuline, Да, я использую SimpleChildWindows Library. Я новичок в WPF :(, вы можете мне помочь, пожалуйста. Спасибо. – jolynice