Отрисовка страниц на WPF C#
Создаю приложение, и не могу понять вроде делал по инструкции с гайда в интернете, но переключение страниц не работает, при нажатии кнопки, подскажите пожалуйста: Сама функция переключения:
using GalaSoft.MvvmLight.Command;
using PCheck.View;
using System.Windows.Controls;
using System.Windows.Input;
namespace PCheck
{
internal class ViewMainModal : ViewModelChangings
{
private Page _startPage = new StartPage();
private Page _diagnosticPage = new DiagnosticPage();
private Page _mainPage = new MainPage();
public Page _CurPage
{
get => null;
set => Set(ref _startPage, value);
}
public ICommand OpenStartPage
{
get
{
return new RelayCommand(() => _CurPage = _startPage);
}
}
public ICommand OpenDiagnosticPage
{
get
{
return new RelayCommand(() => _CurPage = _diagnosticPage);
}
}
public ICommand OpenMainPage
{
get
{
return new RelayCommand(() => _CurPage = _mainPage);
}
}
}
}
И так же Xaml где находится следующие основные элементы, это кнопка по которой идёт переключение,frame в котором будет появляться окно и объявление где хранится и какая функция используется
<Window.DataContext>
<local:ViewMainModal d:IsDataSource="True"/>
</Window.DataContext>
xmlns:dc="clr-namespace:PCheck.View"
xmlns:local="clr-namespace:PCheck"
<Button HorizontalAlignment="Left" Command="{Binding OpenStartPage}" BorderThickness="0" Margin="774,457,0,0" VerticalAlignment="Top" BorderBrush="Transparent" Height="52" Width="208" FontFamily="Rostelecom Basis" FontWeight="Bold" FontSize="17" Background="#FFFD4E1F" Foreground="{x:Null}" Cursor="Hand" Click="Button_Click_4">
<Frame x:Name="MainFraime" NavigationUIVisibility="Hidden" Content="{Binding _CurPage}" Navigated="MainFraime_Navigated"/>
Ответы (1 шт):
Только сейчас заметил get => null;
. Что должно происходить, если вы что бы не происходило, отдаете null
?
internal class ViewMainModal : ViewModelChangings
{
private page _curPage = new MainPage();
public Page CurPage
{
get => _curPage;
set => Set(ref _curPage, value);
}
public ICommand OpenStartPage { get; } = new RelayCommand(() => CurPage = new StartPage());
public ICommand OpenDiagnosticPage { get; } = new RelayCommand(() => CurPage = new DiagnosticPage());
public ICommand OpenMainPage { get; } = new RelayCommand(() => CurPage = new MainPage());
}
Но вообще Frame+Page
не подходят для нормального использования в MVVM, поэтому я бы рекомендовал другое решение.
Я переименовал свойство, чтобы избежать путаницы, не забудьте Content="{Binding CurPage}"
поправить в XAML.