2009-10-25 31 views
3

Im utilisant des pages du projet WPF sur lequel je travaille actuellement. Cependant je ne peux pas sembler comprendre comment changer la largeur d'une page, ou plutôt, la largeur de la fenêtre qui héberge les pages?Modification de la largeur de la fenêtre lors de l'utilisation de pages dans WPF

La définition de la propriété largeur de page modifie uniquement la largeur de la page à l'intérieur du cadre de la fenêtre.

Réglage de la avec de la fenêtre principale ou NavigationWindow par:

<Application.MainWindow> 
    <Window Width="400" /> 
</Application.MainWindow> 

<Application.MainWindow> 
    <NavigationWindow Width="400" /> 
</Application.MainWindow> 

Doesnt travailler non plus. Alors, comment puis-je définir la largeur de la fenêtre en XAML?

Répondre

2

C'est en effet une douleur: vous avez besoin d'une NavigationWindow qui peut naviguer jusqu'à la page. Comme cela hérite de Window, vous pouvez définir la hauteur et la largeur sur ce conteneur.
-Ouvrez une nouvelle application wpf
- supprimez la fenêtre standard1 que vous obtenez.

Modifier le App.xaml ainsi (supprimer l'attribut StartupUri):

<Application x:Class="WpfApplication1.App" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Startup="Application_Startup"> 
<Application.Resources> 

</Application.Resources> 
</Application> 

Écrivez les App.xaml.cs ainsi:

public partial class App : Application 
{ 
    private NavigationWindow navigationWindow; 

    private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     navigationWindow = new NavigationWindow(); 
     navigationWindow.Height = 200; 
     navigationWindow.Width = 100; 
     var page = new Page1(); 
     navigationWindow.Navigate(page); 
     navigationWindow.Show(); 
    } 

vous pouvez ajouter une page dans le menu projet . Cela vous donnera quelque chose comme:

<Page x:Class="WpfApplication1.Page1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Page1"> 
<Grid> 
    <TextBlock>test</TextBlock> 
</Grid> 
</Page> 

Bonne chance!

+0

Merci, c'est exactement ce dont j'ai besoin! De cette façon, il est également possible de définir d'autres choses comme le ReSizeMode, etc. –

0

Si vous demandez juste comment définir les dimensions de la fenêtre elle-même, puis il suffit d'ouvrir le fichier XAML de la fenêtre et définissez les propriétés Largeur/Hauteur:

Window Width="640" Height="480" 

Si vous voulez vraiment un diff. Taille de la fenêtre par page, vous devez faire un peu plus de travail. L'immobilier disponible pour une page est contrôlé par la fenêtre de l'hôte. Il n'y a pas de moyen intrinsèque pour une page de demander plus de biens immobiliers à l'hôte, mais vous pouvez créer un support dans votre application en créant des propriétés jointes que votre fenêtre d'hôte connaît et qui peuvent être appliquées par l'auteur. Lorsque la page est chargée, votre hôte peut vérifier si ces propriétés sont définies et ajuster sa propre largeur en conséquence.

+0

Merci pour la réponse, mais je pense que vous ne comprenez pas mon problème: Je veux juste définir la largeur de la fenêtre de l'hôte une fois à la compilation, rien d'autre. Donc, ce n'est pas tellement la largeur de la page que je veux contrôler, mais la largeur de la fenêtre, si cela a du sens. –