【问题标题】:WPF - how to reference a style in a resource when the resource dictionary has a key setWPF - 当资源字典具有键集时如何引用资源中的样式
【发布时间】:2014-08-07 10:45:34
【问题描述】:

我创建了一个需要引用外部资源字典文件的用户控件。此资源文件中的样式随后用于用户控件中的文本框。

外部资源字典文件如下:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Style x:Key="ValidatedTextboxStyle" TargetType="{x:Type TextBox}">
    ...
</Style>

然后我将其导入到用户控件中,如下所示:(删除了长文件位置)

<Control.Resources>
    <ResourceDictionary x:Key="Test"  Source="..." />
    <common:StringCollapseVisibilityConverter x:Key="StringCollapseVisibilityConverter" />
</Control.Resources>

由于引用了其他资源,WPF 设计器强迫我给它一个“密钥”。

如果字典没有名称,您通常会像这样引用它:

Style="{StaticResource ValidatedTextboxStyle}"

考虑到导入的资源字典被赋予键名“Test”,我将如何在外部资源文件中引用名称为“ValidatedTextboxStyle”的样式?

【问题讨论】:

    标签: wpf


    【解决方案1】:

    在您的控件中合并字典,您可以像之前一样通过 StaticResource 使用它。

    <Control.Resources>
       <ResourceDictionary>
          <ResourceDictionary.MergedDictionaries>
             <ResourceDictionary Source="..." />
          </ResourceDictionary.MergedDictionaries>
          <common:StringCollapseVisibilityConverter
                                  x:Key="StringCollapseVisibilityConverter" />
       </ResourceDictionary>
    </Control.Resources>
    

    此外,您现在可以省略在资源字典上设置x:Key,因为资源字典中定义的所有资源都已合并到您的控制资源中。

    现在,您可以像之前一样使用:

    Style="{StaticResource ValidatedTextboxStyle}"
    

    【讨论】:

    • 感谢您的回复。但它不喜欢这样,因为转换器不是资源字典类型
    • 哦,对了。您必须将其移出 mergedDictionaries 标签。更新了答案。
    • 这可以在全球范围内完成一次吗?如果是,在哪个文件中? app.xaml?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多