У меня есть приложение 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);
}