web-dev-qa-db-fra.com

WPF: Quel est le but de App.xaml?

Je fais du développement .Net depuis un moment, mais je ne connais pas encore la technologie WPF. Quel est le but supposé d'App.xaml? De plus, quel type de code xaml vous y mettez-vous habituellement? Il semble que pour des applications simples, il pourrait être ignoré et laissé tel quel. Est-ce vrai? 

41
jlafay

C'est vrai. App.Xaml est une sorte de point de départ central. Vous POUVEZ l'utiliser, ou vous POUVEZ ouvrir votre première fenêtre (elle est définie dans le fichier app.xaml) manuellement. Il y a quelques événements de la vie là-bas centralls (comme le démarrage de l'application).

18
TomTom

App.xaml est la partie déclarative de votre code (généralement généré par Visual Studio) qui étend System.Windows.Application. Par exemple, Expression Blend peut utiliser App.xaml pour partager un dictionnaire de ressources ou un ensemble de données au moment du design avec l'ensemble de votre application. Et, comme nous utilisons des produits Microsoft, tout ce que Expression Blend peut effectuer de manière magiquement automatique, nous pouvons le faire à la main dans Visual Studio.

Maintenant la tangente: Pour moi, poser des questions sur le but de App.xaml, c'est poser des questions sur le but de System.Windows.Application. N'hésitez pas à m'accuser de changer la question initiale (laissez le numérique s'ensuivre brutalement).

Vous ne pouvez pas simplement ouvrir un System.Windows.Controls.Window dans une Assemblée de votre choix ... Chris Sells me le dira probablement dans son livre . J'ai commencé à comprendre le but de System.Windows.Application lorsque j'utilisais MEF et MVVM Light pour afficher les fenêtres WPF dans DLLs (et non pas EXEs). J'ai des erreurs comme celle-ci:

The type 'System.Windows.Markup.IComponentConnector' is defined in an Assembly that is not referenced.

ou

The type 'System.Windows.Markup.IQueryAmbient' is defined in an Assembly that is not referenced.

L’erreur ci-dessus indique simplement que j’essaie d’ouvrir une fenêtre WPF à l’intérieur d’un DLL et de pas une EXE. Ensuite, il y a cette erreur:

The component 'Songhay.Wpf.WordWalkingStick.Views.ClientView' does not have a resource identified by the URI '/Songhay.Wpf.WordWalkingStick;component/views/clientview.xaml'.

Cela se résume à l'absence d'une fonctionnalité associant WPF Window XAML au «code» WPF (une instance). Cette installation est associée à WPF EXEs et non à WPF DLLs. Visual Studio génère automatiquement une classe EXE WPF appelée App.g.cs (dans votre dossier \obj\Debug) contenant cet appel: System.Windows.Application.LoadComponent(this, resourceLocater)resourceLocater est une variable mal nommée contenant un System.Uri pointant vers le XAML tel que ClientView.xaml mentionné ci-dessus.

Je suis sûr que Chris Sells a écrit un chapitre entier sur la manière dont WPF dépend de System.Windows.Application pour sa vie même. C'est ma perte (littéralement de temps) de ne pas avoir lu à ce sujet.

Je me suis montré un petit quelque chose avec ce test unitaire:

[STAThread]
[TestMethod]
public void ShouldOpenWindow()
{
    Application app = new Application();
    app.Run(new Window());
}

Ne pas envelopper une nouvelle fenêtre dans la méthode System.Windows.Application.Run() jettera une erreur du pays de COM en disant: "Pourquoi avez-vous tiré le tapis de dessous moi?"

35
rasx

Pour des applications simples, il est vrai que cela peut être ignoré. L'objectif principal d'App.xaml est de contenir des ressources (style, stylos, pinceaux, etc.) qui souhaiteraient être disponibles via toutes les fenêtres de votre application.

29
Jason

Stockage des ressources utilisées dans l'ensemble de l'application.

Application est la racine de l'arborescence logique.

8
Nicolas Repiquet

C'est comme Global.asax si vous venez d'un arrière-plan ASP.NET. Vous pouvez également l'utiliser pour partager des ressources dans votre application. Très pratique pour le partage de ressources.

3
Rahul Soni
App.xaml is a major part of wpf application.
It contains major four attributes
1.X:Class->used to connect you xaml and code-behind file(xaml.cs).
2.xmlns->To resolve wpf elements like canvas,stack panel(default one).
3.xmlns:x->To resolve XAML language definition.
4. StartupUri->To give start window when application is launching.
2
AishwaryaKasi

++++++++

App.xaml est le point de départ déclaratif de votre application. Visuel Studio le créera automatiquement pour vous lorsque vous démarrez un nouveau fichier WPF application, y compris un fichier code-behind appelé App.xaml.cs. Ils fonctionne beaucoup comme pour une fenêtre, où les deux fichiers sont des classes partielles, travailler ensemble pour vous permettre de travailler à la fois dans le balisage (XAML) et dans Code-behind.

App.xaml.cs étend la classe Application, qui est une classe centrale dans une application Windows WPF. .NET ira à cette classe pour démarrer instructions et démarrez ensuite la fenêtre ou la page désirée à partir de là . C’est également l’endroit idéal pour s’abonner aux événements importants de l’application. comme le démarrage d'application, les exceptions non gérées, etc.

Une des fonctionnalités les plus couramment utilisées du fichier App.xaml est to Définir les ressources globales pouvant être utilisées et accessibles de partout dans un application, par exemple les styles globaux.

+++++++++ Source: http://www.wpf-tutorial.com/wpf-application/working-with-app-xaml/

0
Ron16

Voici une réponse mise à jour dans le cas où les gens sont toujours à la recherche. 

Il y a cet excellent article sur WPF, et le lien vous place spécifiquement au point App.Xaml pour commencer à vous apprendre ce que vous pouvez en faire.

WPF est facile pour la première application très simple ou deux. Cependant, en raison de la flexibilité accrue du framework, vous avez besoin de ces types de tutoriels pour vous aider à comprendre ce qui peut être fait à partir de quel emplacement (dans les différents fichiers de l’application).

https://www.wpf-tutorial.com/wpf-application/working-with-app-xaml/

Bonne chance.

0
Major Tom