在XBAP中使用差异XAML页面

时间:2010-11-15 17:35:53

标签: c# xaml xbap

如何切换在XBAP中使用的主显示XAML页面。唯一不同的是我想要一个更大的模式和一个更小的模式,但使用相同的控件(一些隐藏)。

1 个答案:

答案 0 :(得分:1)

在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}">