Foros del Web » Programando para Internet » ASPX (.net) »

Estilos heredados

Estas en el tema de Estilos heredados en el foro de ASPX (.net) en Foros del Web. Hola. He creado un estilo genérico para los botones de mi aplicación y quiero hacer estilos heredados de este. Hasta el momento me ha ido ...
  #1 (permalink)  
Antiguo 02/12/2009, 06:57
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
Estilos heredados

Hola.

He creado un estilo genérico para los botones de mi aplicación y quiero hacer estilos heredados de este. Hasta el momento me ha ido relativamente bien. He logrado que funcionara bien el sistema de herencia de los estilos utilizando "BaseOn", modificando propiedades simples como "Width" o "Height" en el estilo hijo.

El problema llega cuando quiero hacer algo más complejo. Resulta que en el estilo padre tengo una imagen básica que utilizarán todos los botones pero quiero que cuando se utilice el estilo hijo, la imagen cambie. El caso es que no soy capaz de modificar desde el estilo hijo la propiedad "Source" de la imagen del estilo padre.

A continuación muestro los estilos (resumidos):

Código xaml:
Ver original
  1. <Style x:Key="Boton1" TargetType="{x:Type Button}">
  2.         <Setter Property="Width" Value="150" />
  3.         <Setter Property="Height" Value="120" />
  4.         <Setter Property="Margin" Value="10" />
  5.         <Setter Property="Template">
  6.             <Setter.Value>
  7.                 <ControlTemplate TargetType="{x:Type Button}">
  8.                     <Grid Name="Grid1" ClipToBounds="True">
  9.                         <StackPanel Name="Stack1">
  10.                             <Image Name="Imagen1" Margin="0,0,0,0" Height="36.613" Stretch="None" HorizontalAlignment="Center" Width="73.165" Source="{Binding Path=Tag, RelativeSource={RelativeSource TemplatedParent}}"/>                           
  11.                             <ContentPresenter/>
  12.                         </StackPanel>
  13.                     </Grid>
  14.                     </ControlTemplate.Triggers>
  15.                   </ControlTemplate>
  16.             </Setter.Value>
  17.         </Setter>    
  18.     </Style>
  19.  
  20.  
  21.     <Style x:Key="BotonBarco" BasedOn="{StaticResource  Boton1}" TargetType="{x:Type Button}">
  22.         <Setter Property="Width" Value="250"/>
  23.         <!--<Setter Property="Template" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderBrush.Color}"/>-->
  24.         <Setter Property="Template">
  25.             <Setter.Value>
  26.                 <ControlTemplate>
  27.                     <StackPanel>
  28.                         <TextBlock Text="Pablo"></TextBlock>
  29.                         <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Template.ControlTemplate.Grid1.Tag}"></TextBlock>
  30.                     </StackPanel>
  31.                 </ControlTemplate>
  32.             </Setter.Value>
  33.         </Setter>
  34.     </Style>

Lo que intento es que el estilo BotonBarco sea igual que el estilo Boton1 pero que cambie el "Source" de la imagen. En el ejemplo de código que he copiado estoy intentando acceder a propiedades internas del "Template" del primer estilo y mostrarlos en un TextBlock, pero no soy capaz. Como podéis ver estoy intentando haerlo utilizando TemplateParent.

Si alguien tiene alguna sugerencia o sabe cómo hacer esto, le estaría muy agradecido si me echara un cable :)

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:29.