如何以编程方式向C#中的UserControl资源添加样式?

时间:2019-05-02 08:19:48

标签: c# wpf wpf-style

我正在尝试执行此XAML:

<UserControl.Resources>
    <Style TargetType="Label">
        <Setter Property="Foreground" Value="Blue"/>
    </Style>
</UserControl.Resources>

使用C#代码。

这是我在UserControl构造函数中的尝试:

InitializeComponent();

string labelForegroundColor = "Blue";

string labelXAMLStyle = @"<Style xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' TargetType=""Label"">
        <Setter Property=""Foreground"" Value=""{LabelForegroundColor}""/>
    </Style>";

labelXAMLStyle = labelXAMLStyle.Replace("{LabelForegroundColor}", labelForegroundColor);

StringReader mainLabelStyleXAMLStringReader = new StringReader(labelXAMLStyle);
XmlReader mainLabelStyleXAMLXMLReader = XmlReader.Create(mainLabelStyleXAMLStringReader);
Style mainLabelStyle = (Style)XamlReader.Load(mainLabelStyleXAMLXMLReader);

this.Resources.Add("LabelStyle", mainLabelStyle);

当我在UserControl中包含XAML时,它显然可以工作,但是当我删除XAML并将代码添加到我的UserControl构造函数中时;不是。

我要去哪里错了? 我必须添加某种资源字典吗?

如何正确设置一个特定的Label中所有UserControl的样式?

1 个答案:

答案 0 :(得分:1)

您可以尝试以编程方式创建样式,然后将其添加到资源中。

self.loginButton.tag