2008-10-22 19 views
41

Estoy intentando crear una interfaz de usuario utilizando XAML. Sin embargo, el archivo se está volviendo cada vez más grande y difícil de trabajar. Cuál es la mejor manera de dividirlo en varios archivos.División de la interfaz WPF en varios archivos Xaml

Me gustaría poder establecer el contenido de un elemento como un ComboBox en un elemento definido en un archivo xaml diferente (pero en el mismo proyecto VS).

gracias

Respuesta

33

Puede dividir una interfaz de usuario grande definiendo UserControls.

Haga clic con el botón derecho en el árbol de soluciones, elija Agregar-> Nuevo elemento ... luego Control de usuario. Puede diseñar esto de la manera normal.

A continuación, puede hacer referencia a su usercontrol en XAML utilizando una declaración de espacio de nombres. Digamos que desea incluir su UserControl en una ventana. En el siguiente ejemplo he añadido un control de usuario llamado "Foo" al espacio de nombres "YourCompany.Controls":

<Window x:Class="YourCompany.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:Controls="clr-namespace:YourCompany.Controls"> 

    <Controls:Foo ... /> 

Para su ejemplo específico, que haría uso de su control de usuario en un cuadro combinado mediante la definición de un DataTemplate que muestra los datos dentro de su usercontrol.

+0

Gracias. eso era exactamente lo que necesitaba. –

22

Se puede dividir archivos XAML utilizando un ResourceDictionary. El ResourceDictionary puede usarse para unir otros archivos:

<Page.Resources> 
    <ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="myresourcedictionary.xaml"/> 
     <ResourceDictionary Source="myresourcedictionary2.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Page.Resources> 

En el ResourceDictionary, también puede declarar Estilos que se pueden utilizar en sus elementos, de tal manera que el archivo principal XAML se hace más pequeño.

Otra posibilidad de obtener un archivo XAML más pequeño es definir sus propios controles que luego usará en su aplicación principal.

+0

Sí, respuesta directa. También funciona con Goodies

-2

Utilice estilos y controles de usuario. Divida su interfaz en partes más pequeñas y codifíquelas en otros archivos xaml. Ejemplo:

<Window>
<VeryBigControl>
<VeryBigControl.Style>
... <!--very long style-->
</VeryBigControl.Style>
.. <!--content of very big control-->
</VeryBigControl
</Window>

dividirla en tres archivos XAML:
Window.xaml - esto será Ventana
VeryBigControl.xaml - esto será UserControl
VeryBigControlStyle.xaml - esto será diccionario de recursos
y así sucesivamente :)

1

También puede crear un Page, en lugar de un UserControl. Un Page puede ser alojado por el Window o por un Frame. Busque los pros y los contras de una página frente a UserControl. Depende un poco de sus requisitos con respecto a la navegación, lo que se adaptará mejor a sus necesidades.

Here is an example of using a Page in a Frame.

Cuestiones relacionadas