2009-06-03 29 views
6

¿Cómo fuerzo UserControls en WPF que están dentro de una barra de herramientas para usar el estilo de botón predeterminado de la barra de herramientas?Cómo hacer que el botón del botón ToolBar se aplique a UserControls en la barra de herramientas

Tengo un sencillo control de usuario llamado ImageButton XAML que tiene algo como esto:

<UserControl x:Class="myNameSpace.ImageButtonUserControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Name="imageButton" 
    > 
    <Button Style="{Binding ElementName=imageButton, Path=ButtonStyle}"> 
     <StackPanel Orientation="Horizontal"> 
      <Image Source="{Binding ElementName=imageButton, Path=ImageSource}" 
        VerticalAlignment="Center" 
        /> 
      <TextBlock Text="{Binding ElementName=imageButton, Path=Text}" 
         Style="{Binding ElementName=imageButton, Path=TextStyle}" 
         VerticalAlignment="Center" 
         /> 
     </StackPanel> 
    </Button> 
</UserControl> 

tengo algunas propiedades de dependencia en el código detrás de esas rutas de enlace y todo funciona bien.

Eso es hasta que lo coloque en una barra de herramientas. Normalmente, cuando coloca los botones en una barra de herramientas, la barra de herramientas los redimensiona para que parezcan botones de la barra de herramientas. Descubrí cómo puedo cambiar este estilo (consulte ToolBar.ButtonStyleKey. Pero, ¿cómo puedo aplicar el estilo ya definido a la propiedad de dependencia del Estilo de botón de mi Control de usuario?

Respuesta

19

¡Oh, disculpas! Yo malinterpreté tu pregunta. Dale una oportunidad:

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"> 
    Hello, world! 
</Button> 

El estilo solo se dirige a los botones, por lo que solo se puede aplicar a los botones. (Lo cual no será un problema por el aspecto de su comentario.)

0

Necesitará una poderosa magia negra para lograrlo cree automáticamente un nuevo estilo funcional para su usercontrol. Hay estilos incorporados para cada tipo de control incorporado que puede agregar a la barra de herramientas. (Observe que ToolBar.ButtonStyleKey no está solo). Deberá crear y aplicar su propio estilo que coincide con los elementos de la barra de herramientas estándar sí mismo.

+0

No quiero crear uno automáticamente, solo quiero aplicar el estilo de botón existente al botón dentro de mi UserControl. – Ray

4

he encontrado una manera, que parece funcionar, aunque estoy interesado en otras formas de resolver esto.

Agregué un controlador de eventos cargado a mi UserControl y lo puse dentro.

if (button.Style == null && this.Parent is ToolBar) 
{ 
    button.Style = (Style)FindResource(ToolBar.ButtonStyleKey); 
} 

Donde botón es el nombre del botón dentro de mi UserControl.

Cuestiones relacionadas