0

我在我的 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 中友好地播放。我也尝试设置 ContentProperty instidead of TemplateProperty,但这导致了类型的字符串。有任何想法吗?谢谢!

4

1 回答 1

0

您的 XAML 和后面的代码不等效。在 XAML 中,您将Content按钮的属性设置为ContentControl. 在后面的代码中,您将Template(or Content) 属性设置为ApplicationVector资源。

您需要将Content按钮的属性设置为一个ContentControlTemplate属性设置为您的ApplicationVector资源的实例。

var contentControl = new ContentControl();
contentControl.SetResourceReference(TemplateProperty, "ApplicationVector");
button.Content = contentControl;
于 2011-12-06T23:19:23.723 回答