none
Herencia Visual de Ventanas WPF RRS feed

  • Pregunta

  • Hola,

    Estoy realizando un proyecto en el que quiero tener un formulario base, y que el resto hereden a partir de el.

    Navegando por internet para encontrar como hacerlo, al final lo hago de la siguiente manera:

    1. Creo un custom control donde el código del tema es el siguiente

    <ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:HerenciaVisual">
    
    
        <Style TargetType="{x:Type local:WindowBase}" BasedOn="{StaticResource {x:Type Window}}">
            <Setter Property="Icon" Value="/HerenciaVisual;component/Agut.png"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type local:WindowBase}">
                        <Grid Background="{TemplateBinding Background}">
                            <Grid.RowDefinitions>
                                <RowDefinition />
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>
                            <!-- This ContentPresenter automatically binds to the Content of the Window -->
                            <ContentPresenter Grid.Row="0"/>
                            <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="5" HorizontalAlignment="Right">
                                <Button Width="100" Content="OK" IsDefault="True" Name="btnOk" />
                                <Button Width="100" Content="Cancel" IsCancel="True" Name="btnCancel"/>
                            </StackPanel>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>

    2. Creo una nueva ventana, MainWindow, que hereda del custom control

    XALM

    <local:WindowBase x:Class="HerenciaVisual.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:HerenciaVisual"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <TextBlock Text="Lorem Ipsum" />
            
        </Grid>
    </local:WindowBase>


    C#

    namespace HerenciaVisual
    {
        /// <summary>
        /// Lógica de interacción para MainWindow.xaml
        /// </summary>
        public partial class MainWindow : WindowBase
        {
    
            public MainWindow()
            {
                InitializeComponent();
    
            }
    
        }
    }

    Mi dudas son:

    - Desde el diseñador de MainWindow, no veo los botones creados en el custom control. Cuando lo ejecuto si que se muestan. ¿Existe alguna forma de que se visualize el resultado de la ventana desde el diseñador?

    - ¿Desde MainWindow puede tener acceso a los botones de la ventana base?

    Un saludo

    EDIT:

    PD: ¿Sabeis de algún manual de WPF en castellano que este bien?

    martes, 29 de abril de 2014 10:34

Todas las respuestas