【发布时间】:2018-04-30 21:13:39
【问题描述】:
我有一个 WPF 应用程序,如果不满足某些条件,我会在其中构建重定向。它似乎重定向正确,但它没有显示 Xaml 文件的内容..
它从我的 GamePage 重定向到 GameSettingsPage。
主窗口用作主视图,页面放在堆栈面板内的框架 (_mainframe) 内,因此我可以切换内容而无需完全离开主窗口。
希望这是有道理的,因为几个小时后,我还没有找到为什么它不会显示游戏设置页面的问题......
我的代码:
主窗口
public partial class MainWindow : INavigator
{
public MainWindow()
{
InitializeComponent();
}
private void ExitGame(object sender, RoutedEventArgs e)
{
System.Windows.Application.Current.Shutdown();
}
public void Navigate(Page p)
{
_mainFrame.Navigate(p);
}
private void NavigateRulesWindow(object sender, RoutedEventArgs e)
{
Navigate(new GameRulesPage());
}
private void NavigateGameWindow(object sender, RoutedEventArgs e)
{
Navigate(new GamePage(this));
}
private void Button_Click(object sender, RoutedEventArgs e)
{
}
}
游戏页面
public partial class GamePage : Page
{
private int numberOfPlayers;
private Player[] players;
private int playerTurn = 0;
private int diceThrow;
private GameState state;
private int delay = 500;
private Dice dice = new Dice();
private GameProperties _writeHelper;
private GameRules _gameRules;
private INavigator _navigator;
public GamePage(INavigator navigator)
{
_navigator = navigator; //assign navigator so i can navigate _mainframe to other pages.
// initialize game properties, check if they are set.
var gameProp = new GameProperties();
this.numberOfPlayers = 2;
this.players = gameProp.CheckPlayerIsSet(this.players);
//check if a player has been set
if (this.players != null)
{ // Player is set or has been set. proceed or start the game.
InitializeComponent();
}
else
{ // redirect to settings window because players has not been set!
_navigator.Navigate(new GameSettingsPage(_navigator));
}
}
}
游戏设置页面
public partial class GameSettingsPage : Page
{
private INavigator _navigator;
public GameSettingsPage(INavigator navigator)
{
InitializeComponent();
_navigator = navigator; //assign navigator so i can navigate _mainframe to other pages.
}
}
为了更好的衡量,我的界面
public interface INavigator
{
void Navigate(Page p);
}
【问题讨论】: