Я пытаюсь изучить Prism и использовать его в новом приложении, над которым я работаю, но застрял при попытке заставить его переключать контент в навигации.Для справки, видео, над которым я работал / учился, было видео Брайана Лагунаса MVVM Made Simple на YouTube (я просматривал этот раздел несколько раз, но не могу понять, что я делаю неправильно).Вот код моего главного окна (когда я добавил строку regionManager.RegisterViewWithRegion()
, это позволило первому зарегистрированному представлению отображаться при запуске, но все равно не позволит мне переключаться с одного вида на другой.
public partial class MainWindow : Window
{
protected RegionManager regionManager = new RegionManager();
public MainWindow()
{
InitializeComponent();
regionManager.RegisterViewWithRegion("Content", typeof(Index));
regionManager.RegisterViewWithRegion("Content", typeof(Home));
DataContext = new MainWindowViewModel(this, regionManager);
Это весь код и операторы призмы xmlns (они находятся вверху всех моих представлений), которые я связал с менеджером региона / региона - я протестировал привязку Команды на кнопке и знаю, что методзапускается, поэтому кнопки должны быть хорошими - но во всем остальном я не уверен, но для видео это выглядит правильно для меня.
XMLNS-заявления
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
Область содержимого в XAML
<!-- Page Content -->
<Border Grid.Row="3" Padding="{Binding WindowContentPadding}">
<ContentControl prism:RegionManager.RegionName="Content" />
</Border>
Bootstrapper
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
protected override void ConfigureContainer()
{
base.ConfigureContainer();
// Registering Unity containers for view model navigation
// All views must be registered.
Container.RegisterType(typeof(object), typeof(Home), "Home");
Container.RegisterType(typeof(object), typeof(Index), "Index");
}
}
MainWindowViewModel
public DelegateCommand<string> NavigateCommand { get; set; }
public MainWindowViewModel(Window _window, RegionManager _regionManager)
{
window = _window;
// MVVM model locator code
regionManager = _regionManager;
NavigateCommand = new DelegateCommand<string>(Navigate);
}
private void Navigate(string uri)
{
//Test
Console.WriteLine(uri);
regionManager.RequestNavigate("Content", uri);
}
Я также проверил его курс MVVM Pluralsight, и инструкции там также выглядят одинаково, так что, насколько я могу судить, это должно быть что-то, чего мне не хватает.