NullReferenceException на ShowDialog - PullRequest
       25

NullReferenceException на ShowDialog

0 голосов
/ 14 апреля 2020

Я новичок в разработке WPF с Prism Framework. Я посмотрел несколько видео Брайана, чтобы узнать об этих двух аргументах. Сейчас я занимаюсь разработкой приложения, но у меня возникает проблема, когда я пытаюсь открыть диалоговое окно настраиваемого окна перед главным окном. Это мое простое окно, чтобы открыть:

<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>

и класс в xaml.cs

public partial class Window1 : Window, IDialogWindow
    {
        public Window1()
        {
            InitializeComponent();
        }

        public IDialogResult Result { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
    }

Это мой класс оболочки:

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>();
        }
    }

и MainWindowViewModel

public MainWindowViewModel(IDialogService dialogService)
        {
            dialogService.ShowDialog("Window1", null, null);
        }

Но когда я пробую этот код, я получаю сообщение об ошибке: 'A dialog's content must be a FrameworkElement'

Что я делаю не так?

Заранее спасибо.

1 Ответ

0 голосов
/ 14 апреля 2020

Название окна является четвертым параметром. Первый должен быть UserControl, который определяет содержимое диалогового окна:

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

Вы найдете пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...