问题标签 [resourcedictionary]

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 投票
1 回答
1550 浏览

wpf - WPF 合并资源字典不一致

我有一个 ResourceDictionary,它由一个 Brush 对象和一个 Style 组成,它使用这个 Brush 对象在其 Template 属性中的几个动画属性(通过 StaticResource 标记扩展)。问题是; 当我将字典与全局应用程序 ResourceDictionary (Application.Resources) 合并时,Brush 不会冻结,并且共享 Style 的每个元素都会受到 Brush 更改的影响。

有趣的是,当我将 Brush 移动到辅助合并的 ResourceDictionary 时,它被冻结并且一切都按预期工作(freezable 在动画之前被克隆)只有当可冻结对象和其他一些资源通过 StaticResource 标记引用该对象时才会出现问题扩展驻留在同一个合并的 ResourceDictionary 中。我在下面粘贴了 App.xaml、Window.xaml 和 Dictionary.xaml 的示例代码。如果您能重现相同的结果并确认这是 WPF 中的错误,我将不胜感激。

注意:如果您在 Visual Studio 中将 ResourceDictionary (Dictionary.xaml) 的内容类型从 Page 更改为 Resource(并将其嵌入 XAML 而不是 BAML 版本到编译的程序集中),问题就会消失。

窗口.xaml

应用程序.xaml

字典.xaml

0 投票
2 回答
2841 浏览

silverlight - 在 Silverlight 3 中正确使用合并的资源字典

正如我所读到的:http: //msdn.microsoft.com/en-us/library/cc903952 (VS.95).aspx ,特别是标记为“使用 ResourceDictionary 转发引用”的部分:

来自任何给定资源字典中的静态资源引用必须引用在资源引用之前已经在词法上定义的资源。静态资源引用无法解析前向引用。因此,如果您使用静态资源引用,则必须设计资源字典结构,以便在每个相应资源字典的开头或附近定义用于进一步按资源使用的资源。

这是否意味着我不能在我的 App.xaml 中做这样的事情:

其中 Brushes.xaml 包含 SolidColorBrush、LinearColorBrush 等,这些定义引用了 Colors.xaml 中定义的颜色?

例如

?

我在 Colors.xaml 中定义我的颜色,例如:

例如,我收到一个运行时错误,指出它找不到键为“AppOrangeRed”的资源。

组织颜色和画笔的最佳实践是什么,以便它们可以重复使用(在适当的情况下,我知道颜色是结构,画笔是参考对象,在http://weblogs.manas.com.ar/spalladino/2009/中有解释03/02/silverlight-xaml-guidelines/ )

谢谢罗伯

0 投票
1 回答
147 浏览

wpf - WPF - 在另一个控件中隐式样式控件

在 WPF 中是否可以隐含地设置位于另一个控件中的控件的样式?

例如,为按钮内的图像设置样式,而不设置所有图像的样式?

0 投票
1 回答
19343 浏览

wpf - 将宽度/高度指定为 WPF 中的资源

WPF 中有没有办法将宽度/高度指定为资源,以便可以在多种样式中重用它,例如边距/填充?

0 投票
1 回答
8242 浏览

c# - WPF 在运行时更新样式

我想在运行时动态更新默认的 Window 样式,以便可以在运行时动态更改 FontSize 和 FontFamily。我发现你的资源字典里的 Styles 在运行时是密封的,不能更改,所以我使用了以下方法来更新样式:

使用以下代码:

这种方法有几个问题,我有几个问题,为什么事情是这样的。

  1. 为什么样式在运行时被密封,有没有办法让它们解封?
  2. 当我重新添加新样式时,为什么我的所有窗口都没有选择它?为什么我必须手动将其应用于每个窗口?
  3. 有没有更好的办法?
0 投票
1 回答
7461 浏览

c# - 在运行时切换 wpf 资源字典

我正在尝试构建一个允许用户在运行时更改主题的 wpf 应用程序。到目前为止,我所做的是创建一个资源字典,其中定义了应用程序的所有颜色,然后我在 xaml 中绑定到这个字典。

以下是我用于切换资源字典的代码:

这段代码运行良好,我知道它正在切换资源字典,但它不会更新屏幕上已经显示的元素。我的问题是:如何刷新或重新绑定屏幕以考虑新的资源字典?

谢谢

sm

0 投票
1 回答
668 浏览

silverlight - 图像在 Expression Blend 中显示,但在运行时不显示

有问题的图像位于与此类似的 ResourceDictionary 内的 ControlTemplate 中(为清楚起见,删除了各种细节):

当我在 Expression Blend 中查看控件时,图像显示得很好,但是当我运行应用程序时,图像不显示。如果我将相同的图像放入 UserControl 中,它也显示得很好,所以问题与使用模板有关。

还有其他方法我应该在模板中加载图像资源吗?

0 投票
4 回答
24505 浏览

wpf - 将集合或数组添加到 wpf 资源字典

我搜索了高低,找不到答案。我有两个问题

  1. 如何在 XAML 中创建数组或集合。我有一个数组,我想插入其中并绑定到组合框。我的第一个想法是将 ItemsControl 放在资源字典中,但组合框的 ItemsSource 需要 IEnumerable,所以这不起作用。

这是我在资源字典中尝试过的,但都不起作用

这就是我绑定它的方式

编辑:更新

我让第一部分以这种方式工作

但是,我宁愿不使用数组列表,我想使用通用列表,所以如果有人知道如何请告诉我。

编辑更新:我猜 XAML 对泛型的支持非常有限,所以也许数组列表是我现在能做的最好的,但如果有人有分析器,我仍然希望在第二个问题上得到帮助

第二。我尝试在我的 XAML 中引用合并的资源字典并遇到问题,因为在 Window.resources 下我拥有的不仅仅是字典,因此它需要我添加 x:Key。添加密钥后,系统将无法再在我的资源字典中找到项目。我不得不将合并的字典移动到 Grid.Resources 。理想情况下,我想在 app.xaml 中引用合并的字典,但我有同样的问题

这是一些示例代码。第一部分需要一个 x:key 来编译,因为我有转换器,它抱怨说如果有多个项目,每个项目都必须有一个密钥

我不得不把它改成这个

谢谢

0 投票
1 回答
2338 浏览

silverlight - ResourceDictionary 中的情节提要

所以我想将我的故事板移动到一个 ResourceDictionary 文件中,但我在这样做时遇到了麻烦。我到处都看过,它涉及使“资源”可共享,但是当没有 x:Shared 属性时,我该如何在 Silverlight 中做到这一点。这是代码

这是我在 XAML 中的内容

这是我得到的错误

错误:元素已经是另一个元素的子元素。

当我放入情节提要时,它只会给我这个错误,没有别的(例如:样式)。我使用的是 Silverlight 3 而不是 wpf。

0 投票
2 回答
2934 浏览

wpf - WPF 资源合并到 Application.Resources 但在运行时未解析

我有一个画笔,ResourceDictionary它是合并到Application.Resources.

但是由于某种原因,当样式应用于其中一个控件时,它不会在运行时解决。但是,如果我在引发异常时从即时窗口调用 Application.Current.FindResource("BrushName") ,则会找到资源。

我错过了什么吗?WPF 不应该尝试在应用程序的资源中查找资源吗?

更新 应用程序很大,所以我不能发布所有实际代码,但这是资源合并和使用的方式:

Brushes.xaml

SomeStyles.xaml

App.xaml

然后一些控件可能会使用这样的资源使用样式:

更新

它似乎发生在用代码创建的菜单和控件上。它是否与那些不属于任何窗口的可视化树的控件和菜单有关?