Как программно добавить стиль к ресурсам UserControl в C #? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь сделать это 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);

Когда у меня есть XAML в моем UserControl, он, очевидно, работает, но когда я удаляю XAML и добавляю код в мой UserControl Constructor;это не так.

Куда я иду?Нужно ли добавлять какой-то словарь ресурсов?

Как мне правильно настроить стиль всех Label в моем конкретном UserControl?

1 Ответ

1 голос
/ 02 мая 2019

Вы можете попытаться создать стиль программно, а затем добавить его к ресурсам.

    Style style = new Style(typeof(Label));
    style.Setters.Add(new Setter(Label.ForegroundProperty, Brushes.Blue));
    Resources[typeof(Label)] = gridStyle;
...