Code-behind statische/dynamische eigenschappen in WPF and Naming Conundrum

Ik heb een knop gedefinieerd in mijn XAML die een knopstijl en een vectorafbeelding heeft, deze is als volgt gedefinieerd:

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

In mijn achterliggende code, heb ik een methode die dynamisch nieuwe knoppen toevoegt die vergelijkbaar zijn met deze aan een StackPanel. Kort gezegd: het doet iets op het ritme van:

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

Dit is het rare deel. Het toont alleen de vectorafbeelding en geen knop erachter. Wanneer ik de voorlaatste regel verwijder (de regel met de vectorreferentie), wordt de knop weergegeven zoals deze zou moeten zijn! Ik ga ervan uit dat het instellen van de sjabloon de stijl overschrijft, maar ze lijken in der minne te spelen in XAML. Ik heb ook geprobeerd om de ContentProperty instidead van TemplateProperty in te stellen, maar dit resulteerde in een reeks van het type. Om het even welke ideeën? Dank je!

0

1 antwoord

Je XAML en code erachter zijn niet hetzelfde. In XAML stelt u de eigenschap Inhoud van de knop in als een ContentControl . In de code erachter, stelt u de eigenschap Template (of Content ) in als de resource ApplicationVector .

U moet de eigenschap Inhoud van de knop instellen als een exemplaar van een ContentControl waarvan de eigenschap Template is ingesteld als uw ApplicationVector resource.

var contentControl = new ContentControl();
contentControl.SetResourceReference(TemplateProperty, "ApplicationVector");
button.Content = contentControl;
0
toegevoegd
Ik ben een idioot. Dank je! = P
toegevoegd de auteur Wally Young, de bron