在代码后端添加没有键的样式资源的WPF方法

13
我正在从WPF应用程序的后台代码中生成XAML,并希望向生成的XAML添加样式。我使用资源字典存储样式信息,我的应用程序将访问并根据资源字典中的键应用于生成的XAML中适当的元素。现在我想要将特定样式应用于生成的XAML中的所有文本框。我试图在资源字典中创建此样式而不使用键,并且我想将此样式资源添加到生成的XAML的资源中。我似乎找不到将特定资源添加到该生成的XAML的资源字典中而不使用键的方法。我的问题是,是否可能这样做,即向用户控件(或窗口等)的资源字典添加资源而不使用该资源的键?
例如,这是我想要生成的XAML:
<UserControl>
    <UserControl.Resources>
        <Style TargetType="{x:Type TextBox}">
            <!--The TextBox style-->
        </Style>
    </UserControl.Resources>
</UserControl>

谢谢!

1个回答

22

所以,我找到了一种方法来实现这个。在向生成的XAML资源添加内容时,不需要指定字符串键,而是使用typeof(TextBox),这似乎可以起作用。

UserControl.Resources.Add(typeof(TextBox), styleDictionary["TextBoxStyleKey"]);

这将导致:

<UserControl.Resources>
    <Style TargetType="TextBox" x:Key="{x:Type TextBox}">
        <!--The Style-->
    </Style>
</UserControl.Resources>

有没有更好的方法(或其他方法)来完成这个?


1
请注意,这段代码之所以可行,是因为如果不添加 x:Key,则会使用 TargetType 作为关键字。 - zastrowm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接