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