1
我將如何去切換在XBAP中使用的主顯示XAML頁面。唯一不同的是我想要一個更大的模式和更小的模式,但使用相同的控件(一些隱藏)。在XBAP中使用不同的XAML頁面
我將如何去切換在XBAP中使用的主顯示XAML頁面。唯一不同的是我想要一個更大的模式和更小的模式,但使用相同的控件(一些隱藏)。在XBAP中使用不同的XAML頁面
在您的App.xaml.cs文件中,您可以通過編程方式更改要在啓動時顯示的Window.xaml文件。這是一個過分簡化的例子。
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
System.Windows.Window startupWindow = null;
if(useLargeMode)
{
startupWindow = new LargeMainWindow();
}
else
{
startupWindow = new SmallMainWindow();
}
window.Show();
}
您也可以通過在App.xaml文件改變的StartupUri做到這一點,但是這顯然將是很難在運行時更改。
<Application x:Class="Main.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml" /> <!-- change this -->
我還沒有嘗試綁定到XAML中的應用程序聲明中的屬性,但VS 2010不會抱怨這一點。我擔心應用程序爲了正常工作而設置了datacontext。試試看,讓我們知道它是如何工作的。 :)
<Application x:Class="Main.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="{Binding StartupWindow}">
我有MainWindow.xaml和MainSmallWindow.xaml。使用這種方法,我可以將它們鏈接到相同的xmal.cs文件而無需重複代碼? – williamtroup 2010-11-16 08:32:33
不,但你可以讓它們都將它們的所有調用thunk轉移到實現所有邏輯的共享類,或者你可以從'Window'類派生一個父類,然後在共享父類中實現公共邏輯。 – 2010-11-16 16:59:06