WPF: Care este scopul lui App.xaml? (Programare, Wpf, Xaml)

Jeff LaFay a intrebat.
a intrebat.

Mă ocup de dezvoltare .Net de ceva timp, dar sunt nou în tehnologia WPF. Care este presupusul scop al lui App.xaml? De asemenea, ce tip de cod xaml fac puneți de obicei în el? Se pare că, pentru aplicații simple, ar putea fi ignorat și lăsat neatins. Este adevărat acest lucru?

8 răspunsuri
TomTom

Este adevărat. App.Xaml este un fel de punct de plecare central. Îl puteți folosi sau puteți începe prima fereastră (este definită în app.xaml) manual. Există unele evenimente de durată de viață acolo centralizează (cum ar fi pornirea aplicației).

Comentarii

  • Deci… pentru ce este folosit atunci? Un exemplu ar fi frumos. –  > Por Jo Smo.
  • Deci, în termeni ASP.NET, spui că este un fel de MasterPage pentru formularele Windows (care poate conține și funcții utilizate la nivel global)? –  > Por Jacob.
rasx

App.xaml este declarativ parte a codului (de obicei generată de Visual Studio) care extinde System.Windows.Application. De exemplu, Expression Blend poate utiliza App.xaml pentru a partaja un dicționar de resurse sau un set de date din timpul proiectării cu întreaga aplicație. Și, deoarece folosim produse Microsoft, tot ceea ce Expression Blend poate face în mod automat, putem face manual în Visual Studio.

Acum, tangenta: Pentru mine, a întreba despre scopul App.xaml înseamnă să ne întrebăm care este scopul pentru System.Windows.Application. Simțiți-vă liber să mă acuzați că am schimbat întrebarea inițială (să urmeze brutalitatea digitală).

Nu poți deschide pur și simplu o System.Windows.Controls.Window în orice Adunare doriți… Probabil că Chris Sells îmi spune asta în cartea sa. Am început să înțeleg care este scopul System.Windows.Application în timp ce foloseam MEF și MVVM Light pentru a afișa ferestre WPF în DLLs (nu EXEs). Am primit erori de genul acesta:

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

sau

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

Eroarea de mai sus spune pur și simplu că încerc să deschid o fereastră WPF în interiorul unei DLL și că nu un EXE. Apoi, apare această eroare:

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

Aceasta se reduce la absența unei facilități care să asocieze XAML-ul ferestrei WPF cu „codul” WPF (o instanță). Această facilitate este asociată cu WPF EXEs și nu la WPF DLLs. Visual Studio generează automat o clasă WPF EXE numită App.g.cs (în objDebug folder) cu acest apel în ea: System.Windows.Application.LoadComponent(this, resourceLocater) unde resourceLocater este o variabilă cu un nume rău numit care conține un System.Uri care indică spre XAML, cum ar fi ClientView.xaml menționat mai sus.

Sunt sigur că Chris Sells are un întreg capitol scris despre modul în care WPF depinde de System.Windows.Application pentru propria sa viață. Este pierderea mea (destul de literalmente de timp) pentru că nu am citit despre asta.

Mi-am arătat câte ceva cu acest test unitar:

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

Eșecul de a înfășura o nouă fereastră în System.Windows.Application.Run() va arunca o eroare de pe tărâmul COM care vorbește despre: „De ce mi-ai tras covorul de sub picioare?”.

Comentarii

  • A fost o explicație grozavă. –  > Por Pow-Ian.
  • Nu știu ce faceți în proiectul MEF, dar în compania mea actuală dezvolt în prezent un Shell pentru a face exact ACEST lucru. Încărcați module din ansambluri mai mult sau mai puțin „necunoscute” și executați Windows și altele asemenea pe. Dacă vă interesează, vă pot împărtăși cunoștințele mele despre modulele vizuale MEF –  > Por Venson.
  • Nu prea vă urmăresc tangența. Referințele lipsă sunt doar atât, referințe lipsă. Și puteți rula o aplicație autonomă fără o instanță de aplicație. Dintr-o notă de pe MSDN: >O aplicație autonomă nu necesită un obiect Application; –  > Por Onots.
Jason

Pentru aplicații simple, este adevărat, poate fi ignorat. Scopul principal pentru App.xaml este de a păstra resursele (stil, pixuri, pensule, pensule etc.) care ar dori să fie disponibile în toate ferestrele din aplicație.

Comentarii

  • Acest răspuns este mult mai bun decât cel acceptat, dacă mă întrebați pe mine. Mai multe exemple ar fi și mai bune. +1 🙂 –  > Por Jo Smo.
Nicolas Repiquet

Stocarea resurselor care sunt utilizate în întreaga aplicație.

Aplicația este rădăcina arborelui logic.

Rahul Soni

Este ca și Global.asax, dacă veniți din mediul ASP.NET. De asemenea, îl puteți utiliza pentru a partaja resurse în întreaga aplicație. Este destul de utilă pentru partajarea resurselor.

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

Comentarii

  • upvoted pentru că, deschide secretul xmlns & xmlns:x pentru mine. –  > Por Nikhil G.
Ron16

++++++++

App.xaml este punctul de pornire declarativ al aplicației dumneavoastră. Visual Studio îl va crea automat pentru dvs. atunci când începeți o nouă aplicație WPF, incluzând un fișier Code-behind numit App.xaml.cs. Acestea funcționează la fel ca pentru o fereastră, unde cele două fișiere sunt clase parțiale, care lucrează împreună pentru a vă permite să lucrați atât în marcare (XAML), cât și în Code-behind.

App.xaml.cs extinde clasa Application, care este o clasă centrală într-o aplicație WPF Windows. .NET va merge la această clasă pentru instrucțiuni de pornire și apoi va porni de acolo fereastra sau pagina dorită. Acesta este, de asemenea, locul în care se subscrie la evenimentele importante ale aplicației, cum ar fi pornirea aplicației, excepțiile netransferate și așa mai departe.

Una dintre cele mai frecvent utilizate caracteristici ale fișierului App.xaml este definirea resurselor globale care pot fi utilizate și accesate din întreaga aplicație, de exemplu, stilurile globale.

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

Maior Tom

Iată un răspuns actualizat în cazul în care oamenii încă mai caută.

Există acest articol excelent despre WPF, iar linkul vă plasează în mod specific la punctul App.Xaml pentru a începe să vă învețe lucrurile pe care le puteți face cu el.

WPF este ușor pentru prima aplicație foarte simplă sau două. Cu toate acestea, datorită flexibilității sporite a cadrului, aveți nevoie de aceste tipuri de tutoriale pentru a vă ajuta să înțelegeți ce se poate face de unde (în diferitele fișiere de aplicație).

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

Mult succes.

Tags:,