[英]WPF page not showing content
我有一個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);
}
您必須查看執行的順序,嘗試在Navigate(Page)方法中放置一個斷點,然后您會看到發生了什么。
為了解釋為什么什么都不顯示,讓我們看看會發生什么。
您調用NavigateGameWindow()方法。
它開始構造GamePage對象。
條件進入else部分。
GameSettingsPage已構建。
_mainFrame.Navigate被調用,_mainFrame導航到GameSettingsPage。
線程繼續執行,因此什么也不會顯示。
MainWindow.Navigate()返回到GamePage構造函數 ,此操作已完成。
現在,執行又回到了NavigateGameWindow ,它再次使用GamePage類型的對象調用MainWindow.Navigate() 。
_mainFrame導航到GamePage對象。
不顯示任何內容(而不顯示GamePage )的原因是,當不滿足條件時,您不會在其構造函數中調用InitializeComponents() 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.