C# Вопросы по MVVM Prism - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь понять структуру призмы C# и сделать небольшой проект. Я столкнулся с проблемой непонимания концепции Prism. Я объясню, что я хочу сделать, что я пробую, мой код:

Я хочу сделать простое приложение, например тест с 5 случайными вопросами. Вы выбираете сложный тест после того, как нажимаете кнопку «Старт». В этом же окне ваша страница меняется с первым вопросом. Выберите правильный ответ, далее и вы go на второй странице со вторым вопросом. Из второго вопроса у вас есть 2 кнопки (предыдущая и следующая), следующая следующая следующая, fini sh и у вас есть сообщение типа «вы получили x / 5 баллов». У меня есть аналогичное приложение, но в качестве фреймворка используется Caliburn. Первое приложение Я хочу сейчас поместить все вопросы в файл xaml.

Что я пробую: я следую документации, обучаю по YouTube в течение 2 дней. Создаю 2 папки: View и ViewModel. Создайте MainPage.xaml как окно в View, а в ViewModel я создаю MainPageViewModel, в файле MainPage.cs я создаю один экземпляр, например:

MainPageViewModel main = new MainPageViewModel();

После этого я создаю кнопку, я проверяю кнопку и работаю. Теперь я хочу создать страницу для подключения к окну MainPageViewModel. На странице я хочу создать еще одну кнопку, и я хочу проверить, работает ли она. Но это шаг, как нельзя создавать.

После нескольких руководств я не могу этого сделать. Не работает подключение к файлу xaml MainPageViewModel.

MainPage:

    <Window x:Class="Aplicatie2._0.View.MainPage"
        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:prism="http://prismlibrary.com/"
        xmlns:local="clr-namespace:Aplicatie2._0.View"
        prism:ViewModelLocator.AutoWireViewModel="True"
        
        mc:Ignorable="d"
        Title="{Binding Title}" Height="450" Width="800">
        <Window.DataContext>
                
        </Window.DataContext>
        <Grid>
                
    </Grid>
</Window>
Error MC3063: Property 'DataContext' does not have a value. Line 14 Position 30.

MainPageViewModel:

using Prism.Mvvm;
using Prism.Navigation;
using Prism.Commands;

namespace Aplicatie2._0.ViewModel
{
        class MainPageViewModel : BindableBase
        {
                private string _Title = "Test";
                public string Title
                {
                        get
                        {
                                return _Title;
                        }
                        set
                        {
                                SetProperty(ref _Title, value);
                        }
                }
        }
}

App.xaml:

    <prism:PrismApplication x:Class="Aplicatie2._0.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:prism="http://prismlibrary.com/"
             xmlns:local="clr-namespace:Aplicatie2._0">
        <Application.Resources>

        </Application.Resources>
</prism:PrismApplication>

App.xaml.cs:

using Prism.Modularity;
using Prism.Ioc;
using System.Windows;
using System.ComponentModel;
using Prism.Unity;
using Aplicatie2._0.View;

namespace Aplicatie2._0
{
        public partial class App  : PrismApplication
        {
                protected override Window CreateShell()
                {
                        return Container.Resolve<MainPage>();
                }

                protected override void RegisterTypes(IContainerRegistry containerRegistry)
                {
                        containerRegistry.RegisterForNavigation<MainPage>("MainPage");
                }

        }
}

1) Как я могу создать несколько страниц и как подключиться к главному окну? (Если я вызываю page1, я хочу быть очищенным, чтобы создать кнопку и Radiobutton на page) 2) Как я могу подключить файл ViewModel к файлу View на xaml без создания экземпляра? 3) Как я могу создать один вопрос в xaml, например:

Question: This is first question
[] Answer1
[] Answer2
[] Answer3

Если вы можете привести мне пример, он идеален, но упростите.

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