none
Form como plantilla para wpf RRS feed

  • Pregunta

  • Estoy desarrollando un proyecto wpf para windows y mi duda es si se pueden crear plantillas o formularios estilo masterpage para que me mantenga una seríe de elementos constantes en distintos formularios como el menu izquierdo o el superior. No veo entre los tipos de formularios a crear ninguno que me indique que se puede hacer una plantilla ¿sabeis algo sobre el tema?

    Se me ha ocurrido crear una ventana que herede de esta, y sale exactamente igual, pienso en crear un modelo con todo lo comun y las demas ventanas que hereden de esta pero lo que no me gusta es que se lanzan unas ventanas encima de otras (window1.show)

     

    Saludos

    sábado, 7 de abril de 2007 10:04

Todas las respuestas

  • Hola Aran,

    Anteriormente, en 2.0 la solución era heredar formularios. Pero en la nueva versión no es posible...

    Horst Klein ha hecho una pregunta a soporte de Microsoft sobre la posibilidad de hacerlo y la respuesta es rotunda:

    Xaml accede enteramente al arbol de la clase, por lo que no hay posibilidad de combinar 2 arboles de controles...

     

    Se me ocurre que la solucion (poco elegante) es:

     

    • Window
      • UserControl (TemplatePre)
      • Contenido (cambia por cada formulario)
      • UserControl (TemplatePost)

     

     

    Otra solucion, aunque mas complicada de implementar es:

     

    • Window
      • UserControl (Template)
        • Contenido (cambia por cada formulario)ç

     

    La segunda solucion no es muy recomendable, ya que fisicamente los controles del contenidos estaría dentro del UserControl "template".

     

     

    Saludos,

     

     

    sábado, 7 de abril de 2007 12:35
  • Teneis algun ejemplo con controlUser y wpf?? yo lo que veo son controles de usuario muy basico (algun boton, caja de texto, imagen..) y claro en mi caso es todo el frame superior (un scroll de images) el derecho (una imagen reflejada) y unos botones con imagenes, lo unico que quiero dejar variable es la parte interior donde cargo los grid con los datos de las tablas llamadas desde los botones, osea estilo web como si fuera un masterpage. Algun ejemplo para descargarme? no he usado nunca nada parecido

     

    Gracias

    lunes, 9 de abril de 2007 15:13
  • Siento discrepar pero si algo tiene WPF es la capacidad de "vestir con diferentes trajes" nuestra aplicación, todo ello mediante:

    - Estilos

    - Plantillas

    - Skins

    - Temas

     

    Es algo demasiado extenso para un sólo mensaje, y ya de partida me atreveré a recomendarte un libro:

     

    Windows Presentaion Foundation Unleashed

    SAMS (Adam Nathan)

     

    En todo caso, el siguiente artículo espero te pueda ser útil:

    http://blog.rioterdecker.net/blogs/chaz/archive/2006/03/06/100.aspx

     

    Un saludo!

    lunes, 9 de abril de 2007 21:53
  • Gracias Toni

    he cargado la aplicación que me has dicho y me da dos errores al ejecutar el fichero window1.xaml.cs

    parece que no reconoce MyApplication, tengo que hacer algo especial para que funcione?

     

    1.-Error 15 'RD.CustomThemes.Sample.Window1' no contiene una definición para 'MyApplication' C:\proyecto1\RD.CustomThemes.Sample\RD.CustomThemes.Sample\Window1.xaml.cs 32 32 RD.CustomThemes.Sample

    2.- Error 16 'RD.CustomThemes.Sample.Window1' no contiene una definición para 'MyApplication' C:\proyecto1\RD.CustomThemes.Sample\RD.CustomThemes.Sample\Window1.xaml.cs 38 46 RD.CustomThemes.Sample

    protected override void OnKeyDown(KeyEventArgs e)

    {

    base.OnKeyDown(e);

    if (e.Key == Key.F5)

    {

    ++_themeIndex;

    if (_themeIndex > this.MyApplication.AvailableThemes.Count - 1)

    {

    _themeIndex = -1;

    Application.Current.Resources = null;

    }

    else

    Application.Current.Resources = this.MyApplication.AvailableThemes[_themeIndex];

    }

    }

    #endregion

    martes, 10 de abril de 2007 7:21
  • Uff!! Sinento haberte hecho perder el tiempo.  Tenía este enlace desde hace bastante tiempo, cuando WPF era una CTP, y como bien dices, no acaba de funcionar bien. En todo caso tengo buenas notícias, ya que han incluido el ejemplo dentro del propio SDK de Windows, con lo que debes tener el código fuente que funciona con la versión final de WPF en tu disco duro (ironias de la vida...). Si instalastes los ejemplos del SDK no te costará encontrar una aplicación denominada LogonScreen.

     

    .NET Framework 3.0 Samples -> Windows Presentation Foundation Samples -> Application Samples -> Logon Screen Demo

     

    También lo tienes disponible online:

     

    http://msdn2.microsoft.com/en-us/library/ms771318.aspx

     

    En todo caso, el primer enlace no es del todo malo...  ya que te será muy útil de cara a entender el código.

     

    Un saludo, y perdona las molestias.

    martes, 10 de abril de 2007 8:24
  • Bueno he probado lo que me habeis dicho y he hecho una pantalla con los recursos (resource diccionary) y luego intento llamarlos desde las ventanas que voy creando para darles a todas el mismo aspecto, pero alguno no me funciona, tengo la duda de si lo que estoy haciendo esta bien enfocado, es decir mi aplicación tiene un formato exacto para todas las pantallas donde lo unico que cambia es el contenedor de datos para hacer altas bajas modificaciones y rejillas de datos con las diferentes tablas de la bd, pero por lo que veo los ejemplos (el logonscreen y otros) tienen un enfoque totalmente distinto. Es una unica pantalla que cambia de aspecto en función de determinados eventos, no hay enlace a datos solo es una cuestión de elementos graficos.

    Los controles los tengo en un archivo de recursos (resource diccionary) los estilos en el app y luego las distintas ventanas, pero parece que al activar los recursos,(Application.Current.Resources = _recursos) pierdo lo que tengo el acceso a los estilos que estan en el app. Parece que solo se puede tener activo uno. Y tengo una linea

    <ObjectDataProvider x:Key="Surf" ObjectType="{x:Type ec:eCatalogoWPF.PhotoList}" />

    que no se donde poner porque si la tengo en el app no se carga y si la pongo en recursos me da errores

     

    Me indicaban, por otra parte utilizar controles de usuario, pero no se muy bien la diferencia entre resourcediccionary y control de usuario, ¿alguien me lo puede explicar?

    No veo en la red ningun ejemplo de wpf con mantenimiento de datos, todos son muy graficos pero poco operativos

     

    Saludos

    viernes, 13 de abril de 2007 7:09
  • pues yo lo haria asi

     

    Me.Visible = True

    Windows1.Show

    sábado, 19 de mayo de 2007 18:49
  • What!?

     

    Saludete!

    sábado, 19 de mayo de 2007 20:41
  • Bueno mi amigo..haz lo que yo hago:

    1: diseñas un formulario con todos los elementos que se puedan reutilizar

    2: creas otro formulario vacio

    3: entras al codigo xaml del formulario completo que creaste...copias el codigo

    4: entras al formulario vacio y pegas el codigo xaml

     

    y ahi tendras un segundo formulario con las mismas caracteristicas del primero, claro esto es solo visual..ahora el codigo c# o vb lo tienes que trabajar independientemente

    viernes, 4 de enero de 2008 17:02
  • A mi se me ha ocurrido usar el control Frame, y hacer una page con los botones, incluir el frame y asignar el mismo page a las paginas que me interese y tengo el menu a la izquierda, soy nuevo en wpf y de momento no se me ha ocurrido nada mejor.
    jueves, 16 de julio de 2009 18:28
  • Si es posible utilizando Styles:

    <Style x:Key="BaseStyle" TargetType="{x:Type Button}">
    ...
    </Style>
    
    <Style x:Key="" BasedOn="{StaticResource BaseStyle}">
    ...
    </Style>
    Revisa este blog post
    Microsoft Certified Technology Specialist .NET 3.5 WPF Application Development
    Profesionista Microsoft VIP México
    Blog Técnico
    World Wide Finalist Imagine Cup 2007
    Microsoft Student Partner
    C#, WPF, WCF
    LinkedIn
    • Propuesto como respuesta dalopeza viernes, 6 de mayo de 2011 19:27
    miércoles, 22 de julio de 2009 20:25