问题标签 [componentresourcekey]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6734 浏览

wpf - 如何从 ComponentResourceKey 获取实际资源?

我在资源字典中定义了一个 ComponentResourceKey,如下所示:

我有一个静态类,用作提供资源键的快捷方式,如下所示:

现在通常当我使用这种风格时,我会做这样的事情:

但是,我有一个场景,我需要在这样的代码中设置样式:

任何想法如何从 ComponentResourceKey 中提取样式?

0 投票
1 回答
9003 浏览

wpf - 让 ComponentResourceKey 工作?

我正在构建一个包含多个程序集的 WPF 应用程序,并且我想在它们之间共享一个资源字典。这需要一个ComponentResourceKey。我已经构建了一个小演示来测试 CRK,但我似乎无法让它工作。

我的演示有两个项目,一个名为Demo的 WPF 项目和一个名为Common的 DLL 。Common项目有一个名为Themes的文件夹。它包含我的资源字典generic.xaml。这是资源字典的文本:

Common还包含一个名为SharedResources.cs的类。它包含一个用于在字典中引用 Brush 资源的属性:

最后,我的Demo项目中的主窗口引用了画笔资源来填充一个矩形:

我找不到它不起作用的原因。它在 VS 2008 和 Blend 中编译得很好,但没有调用资源。我唯一的线索是 Blend 中的一条错误消息:

知道为什么这不起作用吗?谢谢你的帮助。

0 投票
1 回答
2238 浏览

wpf - ComponentResourceKey as DynamicResource 问题

我看到一些使用 ComponentResourceKey 的意外行为。出现问题是因为我使用了 SystemColors 类中使用的名称。

考虑以下代码:

首先,我将 a 中的 ComponentResourceKey 作为静态属性公开:

使用标记中的键将资源分配给该键是可行的。使用 ComponentResourceKey 标记将该资源作为 DynamicResource 调用是可行的。但是使用静态属性调用相同的资源会解析为 SystemColors.ControlColorKey 资源。

这是xaml:

显示窗口时,“详细”按钮会正确显示蓝色背景。但下方的“静态”按钮显示 SystemColors.ControlColorKey 颜色。

将静态属性的名称更改为另一个名称会使两个画笔都解析为正确的颜色。

但是我不确定为什么 DynamicResource 对键的静态实例和标记实例化的解析不同?

谢谢,

ķ

PS:这里是 ResourceDictionarySource 的相关跟踪输出

0 投票
3 回答
5011 浏览

wpf - 已使用 ComponentResourceKey 添加 WPF ResourceDictionary Item

我有以下 ResourceDictionary 已合并到我的 Themes/Generic.xaml 文件中

我正在尝试为具有不同 ComponentResourceKey 的相同 DataType 创建两个不同的数据模板。如您所见,其中一个键附加了一个 2。

在我的 local:Resources 类中,我有以下内容,这是我正在使用的 ComponentResourceKey。

如果我在那里只有一个 DataTemplates,这很有效,但是一旦我添加了第二个,我就会得到一个异常,上面写着:

添加 DataTemplate 时,ResourceDictionary 似乎忽略了键。ResourceDictionary 在使用 ComponentRelationKey 时是否忽略 key 属性?

有什么办法可以解决这个异常吗?

谢谢,劳尔

0 投票
3 回答
9086 浏览

wpf - WPF StaticResource 有效,DynamicResource 无效

我已经尝试了一天,但无济于事,在主题中创建一堆画笔,然后在自定义控件中将它们与 DynamicResource 一起使用。我所做的是这样的:

  • 创建包含样式(作品)的主题 generic.xaml
  • 添加字典以合并到 generic.xaml 以包含应用程序中使用的画笔(作品)
  • 使画笔具有 ComponentResourceKey 键(有效)
  • 使控件使用画笔作为静态资源(作品)
  • 使控件使用画笔作为动态资源(不工作,资源跟踪源说了很多:System.Windows.ResourceDictionary Warning: 9 : Resource not found;)
  • 在 App.Resources 中动态添加具有相同键的画笔(适用于动态资源,它会更改颜色,不适用于静态资源,如预期的那样)

所以我的问题是我找不到任何方法来定义主题中的默认值,以便我可以在应用程序中以编程方式更改它们。StaticResource怎么能找到刷子而DynamicResource找不到?!

我必须补充一点,我创建了一个静态类,将组件资源键作为属性保存,然后我在 xaml 中将其用作 {x:Static UI:ResourceScheme.ControlBackgroundKey} 例如。我的问题似乎与此类似:ComponentResourceKey as DynamicResource 问题只是如果我将静态属性键替换为组件资源键的 XAML 标记,它仍然不起作用。

有人可以帮我吗?:(

0 投票
1 回答
321 浏览

wpf - PlainView 不会加载与 componentResourceKey 和 resourceid 相关的 xaml 页面

我有一个外部库来保存我为 PlainViews 定义样式的所有主题。扩展 viewbase 的 plainview 类位于另一个项目中。我的应用程序不会为plainview 加载xaml。似乎找不到与 PlainView 关联的资源 ID

这是定义plainview的xaml

后面的 PlainView 代码是在另一个项目中定义的。

0 投票
1 回答
2176 浏览

c# - 为什么使用 ComponentResourceKey “无法解析资源”?

我正在尝试使用 重用自定义资源ComponentResourceKey,但它不起作用,我收到以下警告:

Warning 12 The resource "{ComponentResourceKey ResourceId=SadTileBrush, TypeInTargetAssembly={x:Type res:CustomResources}}" could not be resolved.

这是ResourceLibrary/Themes/generic.xaml

ResourceLibrary/CustomResources.cs

用法如下(中SomeOtherProject/MyWindow.xaml):

为什么“资源无法解析”?

请注意,我知道 SO 问题“ Getting a ComponentResourceKey to Work? ”,但这种情况下的问题在于代码隐藏,无论如何我都缺少它......