Question

J'ai un bouton défini dans mon XAML qui a une touche de style et un graphique vectoriel, il est défini ainsi:

    <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>

Dans mon code-behind, j'ai une méthode qui ajoute dynamiquement des nouveaux boutons semblables à celui-ci pour un StackPanel.En bref, il fait quelque chose à la hauteur de:

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

Maintenant, voici l'étrange partie de l'affiche uniquement le vecteur graphique, et pas de bouton derrière elle.Quand j'ai supprimer l'avant-dernière ligne (la ligne avec le vecteur de référence), il affiche le bouton de style comme il se doit!Je suppose qu'en définissant le modèle est remplacer le style, cependant, ils semblent jouer à l'amiable dans le code XAML.J'ai également essayé le réglage de la ContentProperty instidead de TemplateProperty, mais cela a entraîné dans une chaîne de caractères du type.Des idées?Merci!!!!

Était-ce utile?

La solution

Votre XAML et le code derrière ne sont pas équivalentes.Dans le code XAML, vous définissez la Content propriété du bouton pour être un ContentControl.Dans le code-behind, vous définissez la Template (ou Content) de biens à la ApplicationVector de la ressource.

Vous devez définir le Content propriété du bouton à être une instance d'une ContentControl dont Template la propriété est d'être votre ApplicationVector de la ressource.

var contentControl = new ContentControl();
contentControl.SetResourceReference(TemplateProperty, "ApplicationVector");
button.Content = contentControl;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top