Wpf ShowDialog上的NullReferenceException

Wpf ShowDialog上的NullReferenceException,wpf,prism,Wpf,Prism,我是使用Prism框架开发WPF的新手。我看了一些布赖恩的视频来了解这两个论点。 现在我正在开发一个应用程序,但是当我试图在主窗口之前打开一个自定义窗口对话框时,我遇到了一个问题。 这是我要打开的简单窗口: <Window x:Class="Dinamo.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.micr

我是使用Prism框架开发WPF的新手。我看了一些布赖恩的视频来了解这两个论点。 现在我正在开发一个应用程序,但是当我试图在主窗口之前打开一个自定义窗口对话框时,我遇到了一个问题。 这是我要打开的简单窗口:

<Window x:Class="Dinamo.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Dinamo"
        mc:Ignorable="d"
        Title="Window1" Height="450" Width="800">
    <Grid>
        <TextBox>WINDOW</TextBox>
    </Grid>
</Window>
这是我的shell类:

public partial class App
    {
        protected override Window CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }

        protected override void OnStartup(StartupEventArgs e)
        {    
            base.OnStartup(e);
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterDialogWindow<Window1>();
        }
    }
但是当我尝试这段代码时,我收到一个错误:
“对话框的内容必须是框架元素”

我做错了什么


提前感谢。

窗口的名称是第四个参数。第一个应该是定义对话框窗口内容的
UserControl

dialogService.ShowDialog("UserControl1", null, null, "Window1");

你会发现一个例子。

RTM阅读手册:;)但本手册是针对Xamarin表单的,而不是WPF。我已经读过WPF,但是定制窗口的例子并不是clearTry现在的v8版本。您严格按照文档进行操作,但核心(?)中似乎不存在name参数。在v8之前,我也有同样的问题;仍然不符合核心/统一的文件要求。但我不明白。。现在我已经按照文档进行了操作,Brian没有使用UserControl,而是使用Infrastic ribbon窗口。@Lic:它说“为了按名称使用对话框窗口,您必须在IDialogService.Show或IDialogService.ShowDialog方法中提供对话框窗口名称,如下所示”这是一个如何调用
ShowDialog
的示例,与我在回答中提供的类似。你的意思是什么?如果你不相信我,你可以看看你自己。不,我相信你。我在努力理解。但是在我的例子中,我应该在第一个参数上写些什么?@Lic:我想你应该把
网格
文本块
放在
用户控件
中,然后简单地将窗口定义为一个独立类,没有任何.xaml文件。
public MainWindowViewModel(IDialogService dialogService)
        {
            dialogService.ShowDialog("Window1", null, null);
        }
dialogService.ShowDialog("UserControl1", null, null, "Window1");