Я пытаюсь реализовать рекомендованный MVVM способ обработки нескольких представлений / окон в приложении через DialogService.Однако я столкнулся с трудностью реализации закрытия родительского представления после отображения дочернего представления.Вот моя реализация до сих пор.Какова лучшая стратегия для WPF MVVM для обработки такого сценария?
DialogService.cs (я пытаюсь сделать это универсальным, чтобы он мог показывать и закрывать любые окна)
public class DialogService : IDialogService
{
/// <summary>
/// Closes the specified window screen
/// </summary>
/// <param name="dialogWindow"></param>
public void CloseDialog(Window dialogWindow)
{
if ( dialogWindow != null )
dialogWindow.Close ( );
}
/// <summary>
/// Shows the specified window screen
/// </summary>
/// <param name="dialogWindow"></param>
public void ShowDialog(Window dialogWindow)
{
if ( dialogWindow != null )
dialogWindow.ShowDialog ( );
}
}
Представлениемодель, которая показывает дочернее представление, является SelectPackageViewModel.cs
public SelectPackageViewModel(IPackageDataService packageDataService, IDialogService dialogService)
{
this.packageDataService = packageDataService;
this.dialogService = dialogService;
LoadPackages();
LoadCommands();
}
private void LoadCommands()
{
CreateNewCommand = new CustomCommand(CreateNewPackage);
}
private void CreateNewPackage(object obj)
{
dialogService.ShowDialog(new CreatePackage());
}
Родительское представление SelectPackage.cs.Дочернее представление - CreatePackage.cs
<Button Name="btnNewPackage"
Content="New..."
HorizontalAlignment="Center"
Width="120"
Height="30"
FontSize="15" FontWeight="Bold"
Margin="10"
Command="{Binding CreateNewCommand}"/>