C# 在XBAP中使用差异XAML页面

C# 在XBAP中使用差异XAML页面,c#,xaml,xbap,C#,Xaml,Xbap,如何切换XBAP中使用的主显示XAML页面。唯一不同的是我想要一个更大的模式和一个更小的模式,但是使用相同的控件(有些是隐藏的)。在App.xaml.cs文件中,您可以通过编程更改启动时要显示的Window.xaml文件。下面是一个过于简化的例子 protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); System.Windows.Window startupWindow = null

如何切换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中尝试绑定到应用程序声明中的属性,但是VS2010没有对此抱怨。我担心的是,应用程序的datacontext设置得足够早,这样才能正常工作。试试看,让我们知道它是如何工作的。:)


在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中尝试绑定到应用程序声明中的属性,但是VS2010没有对此抱怨。我担心的是,应用程序的datacontext设置得足够早,这样才能正常工作。试试看,让我们知道它是如何工作的。:)



我有MainWindow.xaml和mainsallWindow.xaml。使用此方法,我可以将它们链接到同一个xmal.cs文件而不必重复代码吗?不,但可以让它们都对实现所有逻辑的共享类执行所有调用,或者您可以从
Window
类派生父类,然后在共享父类中实现公共逻辑。使用此方法,我可以将它们链接到同一个xmal.cs文件而不必重复代码吗?不可以,但可以让它们都对实现所有逻辑的共享类执行所有调用,或者可以从
窗口
类派生父类,然后在共享父类中实现公共逻辑。