Pregunta

Tengo un botón definido en mi XAML que tiene un estilo de botón y un gráfico vectorial, se define así:

    <Button
        Height="48"
        Width="48"
        mvp:Presenter.Action="CreateStudentApplication"
        HorizontalAlignment="Center"
        VerticalAlignment="Center"
        Grid.Row="5"
        Grid.Column="3"
        Style="{DynamicResource BaseButton2}">
        <ContentControl Template="{StaticResource ApplicationVector}"/>
    </Button>

En mi código de código, tengo un método que agrega dinámicamente nuevos botones similares a este a un StackPanel. En resumen, hace algo por la melodía de:

            var button = new Button();
            button.Height = 48;
            button.Width = 48;
            button.Tag = x.ID;
            button.SetResourceReference(TemplateProperty, "ApplicationVector");
            button.SetResourceReference(StyleProperty, "BaseButton2");

Ahora aquí está la parte extraña: muestra solo el gráfico vectorial y ningún botón detrás de él. Cuando elimino la línea penúltima (la línea con la referencia del vector), ¡muestra el botón Styled como debería ser! Supongo que establecer la plantilla está anulando el estilo, sin embargo, parecen jugar amigablemente en XAML. También he intentado establecer el ContentProperty Instidead de TemplateProperty, pero esto resultó en una cadena del tipo. ¿Algunas ideas? ¡Gracias!

¿Fue útil?

Solución

Su XAML y Código detrás no son equivalentes. En el XAML, estás configurando el Content propiedad del botón para ser un ContentControl. En el código detrás, está configurando el Template (o Content) propiedad para ser la ApplicationVector recurso.

Necesitarías establecer el Content propiedad del botón para ser una instancia de un ContentControl cuyo Template la propiedad está configurada para ser su ApplicationVector recurso.

var contentControl = new ContentControl();
contentControl.SetResourceReference(TemplateProperty, "ApplicationVector");
button.Content = contentControl;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top