C# 在XBAP中使用差异XAML页面
如何切换XBAP中使用的主显示XAML页面。唯一不同的是我想要一个更大的模式和一个更小的模式,但是使用相同的控件(有些是隐藏的)。在App.xaml.cs文件中,您可以通过编程更改启动时要显示的Window.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
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文件而不必重复代码吗?不可以,但可以让它们都对实现所有逻辑的共享类执行所有调用,或者可以从窗口
类派生父类,然后在共享父类中实现公共逻辑。