Frame.navigate 和 NagivationService 不工作
Frame.navigate and NagivationService do not work
我不知道为什么 Frame.Navigate 和 NavigationService 不工作。
这是我的以下代码,
MainPage.xaml :
<Grid>
<ContentControl Content="{Binding CurrentViewModel}" />
<Button
Command="{Binding ConnexionViewCommand}"
x:Name="Connexion_button"
HorizontalAlignment="Left"
Margin="90,308,0,0"
Content="Login"
VerticalAlignment="Top"
Width="282"/>
<Button
Command="{Binding InscriptionViewCommand}"
x:Name="Create_account"
HorizontalAlignment="Left"
Margin="90,446,0,0"
Content="Create Account"
VerticalAlignment="Top"
Width="282"/>
</Grid>
MainViewModel.cs
public class MainViewModel : ViewModelBase
{
private ViewModelBase _currentViewModel;
readonly static ConnexionViewModel _ConnexionViewModel = new ConnexionViewModel();
readonly static InscriptionViewModel _InscriptionViewModel = new InscriptionViewModel();
readonly static MainPageViewModel _MainPageViewModel = new MainPageViewModel();
public ViewModelBase CurrentViewModel
{
get
{
return _currentViewModel;
}
set
{
if (_currentViewModel == value)
return;
_currentViewModel = value;
RaisePropertyChanged("CurrentViewModel");
}
}
public ICommand ConnexionViewCommand { get; private set; }
public ICommand InscriptionViewCommand { get; private set; }
public MainViewModel()
{
CurrentViewModel = MainViewModel._MainPageViewModel;
ConnexionViewCommand = new RelayCommand(() => ExecuteConnexionViewCommand());
InscriptionViewCommand = new RelayCommand(() => ExecuteInscriptionViewCommand());
}
private void ExecuteConnexionViewCommand()
{
Frame.Navigate(typeof(ConnexionView));
NavigationService.Navigate(new Uri("/ConnexionView.xaml", UriKind.Relative));
MessageBox.Show("CONNEXION");
}
private void ExecuteInscriptionViewCommand()
{
Frame.Navigate(typeof(InscriptView));
NavigationService.Navigate(new Uri("/InscriptionView.xaml", UriKind.Relative));
MessageBox.Show("REGISTER");
}
我的 Frame.navigate 出现以下错误:无法将 System.String 转换为 System.Uri。
对于我的 NavigationService.Navigate:属性 需要一个对象引用。方法或非静态字段“NavigationService.Navigate (Uri)
感谢您的帮助。
您正在将两种不同的东西混合在一起
此 NavigationService.Navigate(new Uri("/ConnexionView.xaml", UriKind.Relative));
是 Windows Phone 8.0 和 8.1 Silverlight 中的常用方法。
这是 Windows Phone 8.1 中使用的方法:Frame.Navigate(typeof(ConnexionView));
在你的情况下 Frame.Navigate 不是一个选项,只需删除该行。
您不能将 Frame.nagivate 和 NavigationService.Navigate 混合在一起。
我不知道为什么 Frame.Navigate 和 NavigationService 不工作。
这是我的以下代码, MainPage.xaml :
<Grid>
<ContentControl Content="{Binding CurrentViewModel}" />
<Button
Command="{Binding ConnexionViewCommand}"
x:Name="Connexion_button"
HorizontalAlignment="Left"
Margin="90,308,0,0"
Content="Login"
VerticalAlignment="Top"
Width="282"/>
<Button
Command="{Binding InscriptionViewCommand}"
x:Name="Create_account"
HorizontalAlignment="Left"
Margin="90,446,0,0"
Content="Create Account"
VerticalAlignment="Top"
Width="282"/>
</Grid>
MainViewModel.cs
public class MainViewModel : ViewModelBase
{
private ViewModelBase _currentViewModel;
readonly static ConnexionViewModel _ConnexionViewModel = new ConnexionViewModel();
readonly static InscriptionViewModel _InscriptionViewModel = new InscriptionViewModel();
readonly static MainPageViewModel _MainPageViewModel = new MainPageViewModel();
public ViewModelBase CurrentViewModel
{
get
{
return _currentViewModel;
}
set
{
if (_currentViewModel == value)
return;
_currentViewModel = value;
RaisePropertyChanged("CurrentViewModel");
}
}
public ICommand ConnexionViewCommand { get; private set; }
public ICommand InscriptionViewCommand { get; private set; }
public MainViewModel()
{
CurrentViewModel = MainViewModel._MainPageViewModel;
ConnexionViewCommand = new RelayCommand(() => ExecuteConnexionViewCommand());
InscriptionViewCommand = new RelayCommand(() => ExecuteInscriptionViewCommand());
}
private void ExecuteConnexionViewCommand()
{
Frame.Navigate(typeof(ConnexionView));
NavigationService.Navigate(new Uri("/ConnexionView.xaml", UriKind.Relative));
MessageBox.Show("CONNEXION");
}
private void ExecuteInscriptionViewCommand()
{
Frame.Navigate(typeof(InscriptView));
NavigationService.Navigate(new Uri("/InscriptionView.xaml", UriKind.Relative));
MessageBox.Show("REGISTER");
}
我的 Frame.navigate 出现以下错误:无法将 System.String 转换为 System.Uri。
对于我的 NavigationService.Navigate:属性 需要一个对象引用。方法或非静态字段“NavigationService.Navigate (Uri)
感谢您的帮助。
您正在将两种不同的东西混合在一起
此 NavigationService.Navigate(new Uri("/ConnexionView.xaml", UriKind.Relative));
是 Windows Phone 8.0 和 8.1 Silverlight 中的常用方法。
这是 Windows Phone 8.1 中使用的方法:Frame.Navigate(typeof(ConnexionView));
在你的情况下 Frame.Navigate 不是一个选项,只需删除该行。
您不能将 Frame.nagivate 和 NavigationService.Navigate 混合在一起。