2010-11-15 24 views

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}"> 
+0

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

+0

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. –