Почему при первом запуске моего приложения WPF отображается имя класса ViewModel вместо ее содержимого (свойств)?C#

Место общения программистов C#
Anonymous
Почему при первом запуске моего приложения WPF отображается имя класса ViewModel вместо ее содержимого (свойств)?

Сообщение Anonymous »

Я привязываю MainWindowViewModel к DataContext MainWindow.
Затем я инициализирую эту MainWindowViewModel определенным itemsPageViewModel.
Проблема в том, что при запуске я вижу имя класса itemsPageViewModel вместо его содержимого:
Изображение

Однако после переключения страниц через кнопки (RelayCommands) теперь та же ViewModel показывает его содержимое:
Изображение

Обе операции выполняются через ту же строку кода:
CurrentPageViewModel = _itemsPageViewModel
Как это может давать разные результаты?
КОД
MainWindow.xaml






















MainWindow.xaml.cs
using System.Windows;
using ListItemUI.InfoPage.ViewModels;
using ListItemUI.ListItemPage.ViewModels;
using ListItemUI.ViewModels;

namespace ListItemUI.Views
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
public MainWindow(IPageFactory itemPageFactory, IPageFactory infoPageFactory)
{
InitializeComponent();
var mainWindowVM = new MainWindowViewModel(itemPageFactory,infoPageFactory);
DataContext = mainWindowVM;
}
}
}

MainWindowViewModel.cs
using System;
using System.Windows.Input;
using ListItemUI.ListItemPage.ViewModels;

namespace ListItemUI.ViewModels
{
public class MainWindowViewModel : ViewModelBase
{
private readonly IListItemUIViewModel _itemsPageViewModel;
private readonly IListItemUIViewModel _infoPageViewModel;
public ICommand SelectItemsPageViewModel { get; }
public ICommand SelectInfoPageViewModel { get; }

public object CurrentPageViewModel
{
get { return _currentPageViewModel; }
set
{
_currentPageViewModel = value;
RaisePropertyChanged(() => CurrentPageViewModel);
}
}
private object _currentPageViewModel;

public MainWindowViewModel(IPageFactory itemsPageFactory, IPageFactory infoPageFactory)
{
_itemsPageViewModel = itemsPageFactory.CreatePage();
_infoPageViewModel = infoPageFactory.CreatePage();

SelectItemsPageViewModel = new RelayCommand(_ =>
{
CurrentPageViewModel = _itemsPageViewModel;

});

SelectInfoPageViewModel = new RelayCommand(_ =>
{
CurrentPageViewModel = _infoPageViewModel;
});

CurrentPageViewModel = _itemsPageViewModel;

}

}
}

ListItemPage.xaml (dataTemplates)



















App.xaml
















Подробнее здесь: https://stackoverflow.com/questions/514 ... iewmodel-i

Вернуться в «C#»