Comment procéder pour changer la page XAML de l'affichage principal qui est utilisée dans un XBAP. Le seul différent est que je veux un mode plus grand et un mode plus petit, mais avec les mêmes contrôles (certains cachés).Utiliser des pages XAML de différences dans XBAP
1
A
Répondre
1
Dans votre fichier App.xaml.cs, vous pouvez modifier par programme le fichier Window.xaml que vous souhaitez afficher au démarrage. Voici un exemple simplifié.
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();
}
Vous pouvez aussi le faire en changeant le StartupUri dans votre fichier App.xaml mais qui va évidemment être plus difficile à changer lors de l'exécution.
<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 -->
J'ai ai pas essayé lier à une propriété dans la déclaration d'application dans le XAML, mais VS 2010 ne se plaint pas à ce sujet. Mon souci serait que l'application ait réglé son datacontext suffisamment tôt pour que cela fonctionne correctement. Essayez-le et laissez-nous savoir comment cela fonctionne. :)
<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}">
J'ai MainWindow.xaml et MainSmallWindow.xaml. En utilisant cette méthode, puis-je les lier au même fichier xmal.cs sans avoir à répéter le code? – williamtroup
Non, mais vous pourriez avoir les deux thunk tous leurs appels à une classe partagée qui implémente toute la logique, ou vous pourriez dériver une classe parente de la classe 'Window' et ensuite avoir la logique commune implémentée dans la classe parent partagée. –