WPF: Quel est le but de App.xaml?

J’ai fait du développement .Net pendant un certain temps, mais je suis nouveau dans la technologie WPF. Quel est le but supposé de App.xaml? En outre, quel type de code xaml y mettezvous habituellement? Il semble que pour des applications simples, il pourrait être ignoré et laissé intact. Est-ce vrai?

C’est vrai. App.Xaml est une sorte de sharepoint départ central. Vous POUVEZ l’utiliser, ou vous POUVEZ démarrer votre première fenêtre (elle est définie dans l’application.xaml) manuellement. Il y a des événements à vie dans les centraux (comme le démarrage de l’application).

App.xaml est la partie déclarative de votre code (généralement générée par Visual Studio) qui étend System.Windows.Application . Par exemple, Expression Blend peut utiliser App.xaml pour partager un dictionnaire de ressources ou un jeu de données au moment de la conception avec l’ensemble de votre application. Et, comme nous utilisons les produits Microsoft, quelle que soit la fonction d’Expression Blend, nous pouvons le faire manuellement dans Visual Studio.

Maintenant, la tangente: Pour moi, demander à App.xaml sert App.xaml c’est demander à App.xaml sert System.Windows.Application . N’hésitez pas à m’accuser de changer la question originale (laisser le numérique s’ensuivre).

Vous ne pouvez pas simplement ouvrir un System.Windows.Controls.Window dans une assemblée que vous aimez… Chris Sells me dit probablement cela dans son livre . J’ai commencé à comprendre le but de System.Windows.Application lors de l’utilisation de MEF et de MVVM Light pour afficher des fenêtres WPF dans des DLLs (et non des EXEs ). J’ai eu des erreurs comme ceci:

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 dit simplement que j’essaie d’ouvrir une fenêtre WPF à l’intérieur d’une DLL et non d’ un 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 fonction qui associe WPF Window XAML au «code» WPF (une instance). Cette fonctionnalité est associée aux EXEs WPF et non aux DLLs WPF. Visual Studio génère automatiquement une classe EXE WPF appelée App.g.cs (dans votre dossier \obj\Debug ) avec cet appel: System.Windows.Application.LoadComponent(this, resourceLocater)resourceLocater est une variable mal nommée contenant un System.Uri pointant vers le XAML comme ClientView.xaml mentionné ci-dessus.

Je suis sûr que Chris Sells a tout un chapitre écrit sur la façon dont WPF dépend de System.Windows.Application pour sa vie même. C’est ma perte (littéralement du 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()); } 

Si vous ne parvenez pas à envelopper une nouvelle fenêtre dans la méthode System.Windows.Application.Run() , une erreur provenant de la terre de COM vous lancera: «Pourquoi avez-vous tiré le tapis de dessous moi?

Pour les applications simples, il est vrai que cela peut être ignoré. Le principal objective de App.xaml est de conserver des ressources (style, stylos, pinceaux, etc.) qui seraient disponibles dans toutes les fenêtres de votre application.

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

L’application est la racine de l’arborescence logique.

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.

 App.xaml is a major part of wpf application. It contains major four atsortingbutes 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. 

++++++++

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

App.xaml.cs étend la classe Application, qui est une classe centrale dans une application Windows WPF. .NET ira à cette classe pour les instructions de démarrage, puis démarrera la fenêtre ou la page souhaitée à partir de là. C’est également l’endroit idéal pour s’abonner à des événements d’application importants, tels que le démarrage d’une application, les exceptions non gérées, etc.

L’une des fonctionnalités les plus utilisées du fichier App.xaml consiste à définir des ressources globales pouvant être utilisées et accessibles depuis une application, par exemple des styles globaux.

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

Voici une réponse mise à jour au cas où les gens chercheraient encore.

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

WPF est facile pour la première application très simple ou deux. Cependant, en raison de la flexibilité accrue de la structure, vous avez besoin de ces types de didacticiels pour vous aider à comprendre ce qu’il est possible de faire à partir d’où (dans les différents fichiers d’application).

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

Bonne chance.