2010-11-10 26 views
36

He hecho desarrollo .Net por un tiempo, pero soy nuevo en la tecnología WPF. ¿Cuál es el supuesto propósito de App.xaml? Además, ¿qué tipo de código xaml hacer que suele poner en él? Parece que para aplicaciones simples podría ignorarse y dejarse intacto. ¿Es esto cierto?WPF: ¿Cuál es el propósito de App.xaml?

Respuesta

18

Es cierto. App.Xaml es una especie de punto de partida central. PUEDES usarlo, o PUEDES iniciar tu primera ventana (está definida en la aplicación.xaml) manualmente. Hay algunos eventos de por vida allí centralls (como el inicio de la aplicación).

+0

Entonces ... ¿para qué se usa entonces? Un ejemplo sería bueno. –

+0

Entonces, en términos de ASP.NET, ¿está diciendo que es algo así como una página maestra para sus formularios de Windows (que también puede contener funciones utilizadas globalmente)? – Jacob

8

Almacenar recursos que se utilizan en toda la aplicación.

La aplicación es la raíz del árbol lógico.

3

Es como Global.asax si vienes de un fondo ASP.NET. También puede usarlo para compartir recursos a través de su aplicación. Resulta bastante útil para compartir recursos.

24

Para aplicaciones simples, es cierto, se puede ignorar. El objetivo principal de App.xaml es mantener los recursos (estilo, lápices, pinceles, etc.) que le gustaría tener disponibles a través de todas las ventanas de su aplicación.

+3

Esta respuesta es mucho mejor que la aceptada si me preguntas. Algunos ejemplos más, serían incluso mejores. +1 :) –

33

App.xaml es la parte declarativa de su código (normalmente generada por Visual Studio) que se extiende System.Windows.Application. Por ejemplo, Expression Blend puede usar App.xaml para compartir un diccionario de recursos o un conjunto de datos en tiempo de diseño con toda su aplicación. Y, debido a que estamos usando productos de Microsoft, lo que Expression Blend puede hacer de forma automática, podemos hacerlo a mano en Visual Studio.

Ahora la tangente: Para mí, para preguntar sobre el propósito de App.xaml es preguntar acerca de la finalidad para la System.Windows.Application. Siéntete libre de acusarme de cambiar la pregunta original (deja que siga lo digital brutalmente).

No puede simplemente abrir un System.Windows.Controls.Window en cualquier Asamblea que desee ... Chris Sells probablemente me diga esto en his book. Empecé a entender el propósito de System.Windows.Application al usar MEF y MVVM Light para mostrar ventanas WPF en DLLs (no EXEs). Tengo errores como este:

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

o

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

El error anterior es simplemente decir que estoy tratando de abrir una ventana de WPF en el interior de un DLL y no una EXE. Entonces, hay un error:

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

Esto se reduce a la ausencia de una instalación que asocia WPF XAML ventana con el “código” WPF (un ejemplo). Esta función está asociada con WPF EXEs y no con WPF DLLs. Visual Studio autogenera una clase WPF EXE llamada App.g.cs (en su carpeta \obj\Debug) con esta llamada: System.Windows.Application.LoadComponent(this, resourceLocater) donde resourceLocater es una variable mal nombrada que contiene un System.Uri apuntando al XAML como ClientView.xaml mencionado anteriormente.

Estoy seguro de que Chris Sells tiene todo un capítulo escrito sobre cómo WPF depende de System.Windows.Application para toda su vida. Es mi pérdida (bastante literalmente de tiempo) por no haber leído sobre eso.

he demostrado a mí mismo un poco de algo con esta unidad de prueba:

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

El no poder envolver una nueva ventana en el método System.Windows.Application.Run() generará un error de la tierra de COM hablando, “¿Por qué se tira la alfombra de debajo de mí?”

+19

¡Ahora, estoy realmente confundido! – Vidar

+4

Esa fue una gran explicación. –

+0

No sé lo que hace en su proyecto de MEF, pero en mi empresa actual, actualmente estoy desarrollando un Shell para hacer exactamente ESTO. Cargue módulos de ensamblajes más o menos "desconocidos" y ejecute Windows, etc. Si está interesado, puedo compartir mi conocimiento sobre los módulos visuales de MEF – Venson

1
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. 
+1

upvoted porque abre el secreto de 'xmlns' &' xmlns: x' para mí. –

0

++++++++

App.xaml is the declarative starting point of your application. Visual Studio will automatically create it for you when you start a new WPF application, including a Code-behind file called App.xaml.cs. They work much like for a Window, where the two files are partial classes, working together to allow you to work in both markup (XAML) and Code-behind.

App.xaml.cs extends the Application class, which is a central class in a WPF Windows application. .NET will go to this class for starting instructions and then start the desired Window or Page from there. This is also the place to subscribe to important application events, like application start, unhandled exceptions and so on.

One of the most commonly used features of the App.xaml file is to define global resources that may be used and accessed from all over an application, for instance global styles.

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

Cuestiones relacionadas