usar una objetos objeto listas lista dinamicos dinamico dinamicamente crear controles como arreglos c# xaml windows-phone-8 custom-controls

objetos - crear una lista c#



WP8 cómo crear una página base y usarla (2)

En mi opinión, la mejor manera de hacerlo es crear un UserControl que envuelva su logotipo y su menú de usuario. Luego incluye ese UserControl en cada página.

Busqué en Google, pero no obtuve ningún recurso útil, así que decidí preguntar.

Problema:

Tengo una aplicación Windows Phone 8 C # / XAML .NET 4.5 , que va a tener varias páginas ( 15 - 50 ) que tendrán un aspecto similar + el mismo contexto de datos configurado en una instancia de ViewModel :

-------------------------- |logo usermenu(v)| -------------------------- | | | | | | | ..variable.. | | ..content... | | | | | --------------------------

Pregunta:

No puedo encontrar nada utilizable en este asunto, ¿alguien podría explicar cómo hacerlo?

(Soy un novato, lo que significa que estoy agradecido por cualquier información útil, pero mucho más por la explicación para los tontos)

  • ¿Cómo crear una página base / ancestro para derivar mis páginas?

  • ¿Hay alguna manera de establecer un contexto de datos en el antecesor?

  • ¿Cómo usar esa página base / ancestro?

PD: En caso de que te estés preguntando por qué quiero tener páginas con el mismo contexto de datos, hay más escrito al respecto en Esta pregunta que hice antes


Parece que probablemente estés tomando el camino equivocado aquí.

En lugar de tener de 15 a 50 páginas idénticas con el mismo contexto de datos, tenga una página y varíe el DataContext. Esto será mucho más simple que tener muchas páginas que todas descienden de la misma base.
Esto es, por supuesto, depende de cuán variable es tu contenido real.

En términos de sus preguntas específicas:

  • Las páginas son clases como cualquier otra y, por lo tanto, la herencia se define de la misma manera. Solo asegúrese de especificar el ancestro en el archivo cs y xaml .

  • No puede configurar el contexto de datos en el ancestro para que sea diferente de la instancia real y si lo establece en el ancestro no estará disponible para la instancia. Necesita configurar el DataContext en la instancia.

  • Algo como esto:

Una página base no visual (más sobre esto en un momento)

namespace SO19398590 { using Microsoft.Phone.Controls; public class MyBasePage : PhoneApplicationPage { } }

Una página real que hereda de esto.
cs:

public partial class MainPage : MyBasePage { public MainPage() { InitializeComponent(); } }

xaml (parcial):

<so19398590:MyBasePage x:Class="SO19398590.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:so19398590="clr-namespace:SO19398590" SupportedOrientations="Portrait"> <Grid x:Name="LayoutRoot" Background="Transparent"> <!-- put stuff here --> </Grid> </so19398590:MyBasePage>

Tenga en cuenta que esta es una página base sin visuales y soy consciente de que pidió herencia visual de la clase base.
Lamentablemente, hay una historia muy pobre con Windows Phone cuando se trata de la herencia visual de la página. A las herramientas (diseñadores) no les gusta y es muy fácil entrar en problemas que son difíciles de diagnosticar.

Un mejor enfoque sería usar [múltiples instancias de] una página pero cargar diferentes controles de usuario dependiendo de los datos que desea mostrar.
Una alternativa un poco más complicada, pero que aún permite una experiencia de navegación de página estándar, es usar un PhoneApplicationFrame personalizado e incluir los elementos comunes de UI allí.

Lo siento, esta es una respuesta bastante genérica, pero la "mejor" solución dependerá de lo que realmente está pasando en el espacio que define como "contenido variable".