将视图显示为对话框

时间:2015-04-22 03:53:25

标签: wpf vb.net mvvm devexpress devexpress-windows-ui

我使用devexpress hybrid wpf scaffolding向导生成一个完整的MVVM

应用程序包含集合和单个对象视图的视图。

现在我正在努力弄清楚当从集合视图中双击时如何弹出一些单个对象视图,作为一个metroUI对话框而不是一个带有后退按钮的框架。

1 个答案:

答案 0 :(得分:1)

我建议您使用IDialogSerivice及其WinUIDialogService实施来完成此任务。 由于您使用的是scaffolding,因此您应该进入收藏视图 (YouEntityCollectionView.xaml)并进入Behaviors部分:

<dxmvvm:Interaction.Behaviors>
    <dxwui:WinUIMessageBoxService/>
    <dxmvvm:EventToCommand Command="{Binding OnLoadedCommand}" />
    <WindowedDocumentUIService YieldToParent="True"/>
</dxmvvm:Interaction.Behaviors>

然后将您的服务添加到此部分:

<dxmvvm:Interaction.Behaviors>
    <dxwui:WinUIMessageBoxService/>
    <dxmvvm:EventToCommand Command="{Binding OnLoadedCommand}" />
    <dxwui:WinUIDialogService />
</dxmvvm:Interaction.Behaviors>

之后,您应该将IDocumentManagerService替换为IDialogService代码中的CollectionViewModel。它可能如下所示:

// Edit:
//DocumentManagerService.ShowExistingEntityDocument<TEntity, TPrimaryKey>(this, primaryKey);
this.GetService<IDialogService>().ShowDialog(MessageButton.OKCancel, null, typeof(TEntity).Name + "View", primaryKey, this);

// New:
//DocumentManagerService.ShowNewEntityDocument(this, newEntityInitializer);
this.GetService<IDialogService>().ShowDialog(MessageButton.OKCancel, null, typeof(TEntity).Name + "View", newEntityInitializer, this);