Статические / динамические свойства выделенного кода в WPF и Naming Conundrum - PullRequest
0 голосов
/ 07 декабря 2011

В моем XAML определена кнопка, которая имеет стиль кнопок и векторную графику, она определяется следующим образом:

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

В моем коде позади у меня есть метод, который динамически добавляет новые кнопкипохож на этот на StackPanel.Короче говоря, это что-то делает для мелодии:

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

Теперь вот странная часть - она ​​отображает только векторную графику, а за ней нет кнопки.Когда я удаляю предпоследнюю строку (строку с векторной ссылкой), она отображает кнопку в стиле, как и должно быть!Я предполагаю, что установка шаблона имеет приоритет над стилем, однако они, похоже, дружно играют в XAML.Я также попытался установить instidead ContentProperty TemplateProperty, но это привело к строке типа.Есть идеи?Спасибо!

1 Ответ

0 голосов
/ 07 декабря 2011

Ваш XAML и код не эквивалентны. В XAML вы устанавливаете свойство Content кнопки как ContentControl. В приведенном ниже коде вы устанавливаете свойство Template (или Content) как ресурс ApplicationVector.

Вам необходимо установить свойство Content кнопки в качестве экземпляра ContentControl, свойство Template которого установлено в качестве ресурса ApplicationVector.

var contentControl = new ContentControl();
contentControl.SetResourceReference(TemplateProperty, "ApplicationVector");
button.Content = contentControl;
...