2016-11-12 150 views
1

這是我的情景,我需要創建一個簡單的uwp應用程序,我有一個單一的viewmodel和多個視圖..我使用棱鏡mvvm /團結。ViewModelLocator棱鏡mvvm

MainPage.xaml中

<prism:SessionStateAwarePage 
x:Class="MvvmSample.Views.MainPage" 
xmlns:prism="using:Prism.Windows.Mvvm" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:MvvmSample" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
prism:ViewModelLocator.AutoWireViewModel="True" 
mc:Ignorable="d"> 
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <TextBlock Text="{Binding Title}" FontSize="29.333" /> 
    <Button Content="Navigate" Command="{Binding del}"/> 
</Grid> 

Viewmodels.MainpageViewModel

public class MainPageViewModel : ViewModelBase 
    { 
     public string Title { get; set; } 
     public INavigationService NavigateToPage; 
     public static List<string> names = new List<string>() { "Anzal", "Rashid", "Kamil", "Fahad" }; 
     public ObservableCollection<string> Mynames { get; set; } 
     public MainPageViewModel(INavigationService navigationservice) 
     { 
      this.Title = "Run Time"; 
      NavigateToPage = navigationservice; 
      for (int i = 0; i < names.Count; i++) 
      { 
       Mynames.Add(names[i]); 

      } 
      del = new DelegateCommand(
       () =>          
      NavigateToPage.Navigate(App.Expeirences.Second.ToString(),null); 
       ); 
     } 
    } 

SecondPage.xaml

<prism:SessionStateAwarePage 
x:Class="Design3.Views.SecondPage" 
xmlns:prism="using:Prism.Windows.Mvvm" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:Design3" 
prism:ViewModelLocator.AutoWireViewModel="True" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d"> 
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <ListBox ItemsSource="{Binding names}"/> 
</Grid> 

App.xaml.cs

 sealed partial class App : PrismUnityApplication 
{ 
    public App() 
    { 
     this.InitializeComponent(); 
    } 
    protected override Task OnInitializeAsync(IActivatedEventArgs args) 
    { 
     Container.RegisterInstance<INavigationService>(this.NavigationService); 
     return base.OnInitializeAsync(args); 
    } 
    protected override Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args) 
    { 
     this.NavigationService.Navigate(Expeirences.Main.ToString(), null); 
     Window.Current.Activate(); 
     return Task.FromResult(true); 
    } 
    public enum Expeirences 
    { 
     Main, 
     Second 
    } 

} 

現在的問題occurs..How我可以結合我secondpage到mainpageviewmodel ???如何使用我的ViewModelLocator?

回答

0

要註冊MainpageViewModelSecondPageViewModelLocationProvider,從而覆蓋了約定:

ViewModelLocationProvider.Register<SecondPage, MainpageViewModel>(); 

...最好導航到第二頁:-)

+0

在此之前,不工作..無論我需要解決容器還是什麼? –

+0

你有例外嗎?你怎麼知道它不起作用? – Haukinger

+0

導航到第二頁時,它不會顯示與名稱綁定的列表框......雖然沒有例外或錯誤... –