问题标签 [staticresource]

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 回答
12874 浏览

wpf - WPF ListBox ItemsSource StaticResource/Binding 问题

给定以下代码:

在这个例子中,

给我一个错误,抱怨它无法绑定到“CollectionViewSource”对象。

但另一个列表框:

结合得很好。

所以我的问题是为什么一个有效而另一个无效?最后,不是两个 ItenSources 都设置为相同的“CollectionViewSource”对象吗?

谢谢你。

0 投票
1 回答
1209 浏览

wpf - DynamicResource 不工作,但 StaticResource 可以吗?

这是场景:

1)打开Visual Studio 2008,新建项目...

2)选择WPF自定义控件库作为项目类型

3) 打开位于 Themes 文件夹中的 Generic.xaml 资源字典

4)添加一个简单的画笔,例如:

< SolidColorBrush x:Key="BackgroundBrush" Color="Yellow" />

5) 将嵌套 Borer 控件的 Background 属性从

背景="{模板绑定背景}"

背景="{DynamicResource BackgroundBrush}"

现在当你在任何项目中编译和使用这个控件时,背景不会是黄色的。但是,如果您将背景属性更改为 StaticResource

背景="{StaticResource BackgroundBrush}"

......它会工作。为什么是这样?为什么 StaticResource 有效,DynamicResource 无效???

0 投票
1 回答
857 浏览

wpf - 当 WPF 元素具有 StaticResources 时,如何通过它们的类型实例化它们?

我需要通过反射为设计器实例化 WPF 类型(例如,UserControl 或 Page)。我遇到的问题是,当我尝试使用 Activator.CreateInstance 实例化这些时,我得到一个TargetInvocationException ,它最终包装了由StaticResource标记扩展引发的异常。

澄清:这些类型在运行时加载的不同程序集中!

显然,Activator.CreateInstance无法实例化使用{StaticResource XXX}标记扩展的类型,即使在类型定义中定义了静态资源也是如此。

因此,如果您只有以下类型的定义(类型 + xaml 文件):

您将如何在运行时启动它?

顺便说一句,要求您使用 DynamicResource 是不可接受的。Visual Studio 需要这个吗?然而,VS 能够启动您的 WPF 框架元素的副本并将其粘贴到设计器中。


这是一个演示该问题的示例应用程序(beta 2,抱歉)。

http://cid-f8be9de57b85cc35.skydrive.live.com/self.aspx/Public/ResourcesGoKaboom.zip

该应用程序尝试在其资源字典中加载带有绘图的页面。我尝试使用Application.LoadComponentActivator.CreateInstance动态加载它,但它们都失败了。


好的,上面的例子没有问题。问题是我在元素的属性中使用了 StaticResource,它引用了在该元素中定义的资源。

让我感到震惊的是,这在视觉工作室中有效。 所以在设计师那里,一切看起来都还不错,但 IRL 都是梨形的。恕我直言,这是一个错误,我已将其报告为:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=519244

不确定它是否是 VS 的失败……失败,或者 StaticResource 扩展是否在 VS 中工作但不是 IRL。

0 投票
2 回答
6693 浏览

silverlight - 尝试使用 ResourceDictionary,但其中的样式显示为未找到

我有一个名为 MyClassLibrary 的 Silverlight 类库。

在其中,我有一个名为 MyControl 的用户控件。

在控件中,我定义了用户资源:

该控件使用如下样式:

这一切都很完美,ComboBox 提供了正确的样式,所以我知道样式写得正确。

我真正想要的是将样式放在资源字典中,以便该程序集中的多个不同控件可以使用它。所以我在同一个程序集中创建了一个资源字典。我称之为 ResourceDictionary.xaml。

我将样式定义从我的用户控件移动到资源字典。

那么资源字典看起来像这样:

控件的用户资源现在如下所示:

并且控件仍然以与以前完全相同的方式使用样式。

现在我知道它正在查找 ResourceDictionary.xaml 文件,因为我尝试将“Source”属性更改为 NonExistentFile.xaml,但它抱怨找不到该文件。它不会对 ResourceDictionary.xaml 提出投诉,所以我认为它正在找到它。

但是,当我运行该应用程序时,我收到“找不到具有名称/键组合框样式的资源”的错误。

我究竟做错了什么?这看起来很简单,但它不起作用。

提前感谢您能给我的任何帮助。

0 投票
3 回答
6324 浏览

wpf - DynamicResource 而不是 StaticResource 是否有显着的性能成本?

我们的设计师正在使用 Blend 来设计我们的 WPF 应用程序。当他为属性选择本地资源时,Blend 会将它们应用为 a{DynamicResource}而不是 a {StaticResource}。我的猜测是 Blend 这样做是因为它使应用程序能够在运行时重新设置主题,而无需重新启动它。

我的问题是:这种额外的查找是否有显着的性能成本?我们是否应该要求设计师返回并手动将那些 Dynamics 更改为 Statics?

这是一个很好的 SO 问题,解释了类型之间的区别:WPF 中的 StaticResource 和 DynamicResource 有什么区别?

0 投票
2 回答
6710 浏览

wpf - 是否可以为 WPF 中的静态资源提供类型转换器?

我有一个新手 WPF 问题。

想象一下我的用户控件有一个这样的命名空间声明:

我有这样的用户控件资源:

然后在我的用户控件中的某个地方我有这个:

这将导致错误,因为Today定义为整数资源,但 Text 属性需要一个字符串。这个例子是人为的,但希望能说明这个问题。

问题是,除了使我的资源类型与属性类型完全匹配之外,有没有办法为我的资源提供转换器?用于绑定或类型转换器的 IValueConverter 之类的东西。

谢谢!

0 投票
2 回答
12249 浏览

.net - 资源无法解析(VS 2010 RC)

我有 WPF 4 应用程序,它有许多在其子控件中共享样式的用户控件。所以我在我的 App.xaml 中创建了许多样式作为 . 例如:

然后在我的 UserControls 中,我使用 StaticResource 来引用它们,例如:

这一切都很好。问题是 Visual Studio 2010 RC 在 StaticResource 引用下放了一个蓝色波浪线并说:资源“ViewTitle”无法解决。

那是怎么回事?这是 Visual Studio 的问题还是我做错了什么?

0 投票
2 回答
2279 浏览

wpf - WPF - 绑定 ItemsSource 时 ListBox 忽略样式

我在 WPF 中创建了样式化的 ListBox,以便将其呈现为复选框列表。

当我手动填充 ListBox 的项目时,样式效果很好。但是,当我将 ListBox 的 ItemsSource 绑定到静态资源(包含所需项目的 ItemsControl)时,样式将完全删除。

这里的风格:

这是正确显示样式的 ListBox 的代码:

这是忽略样式的 ListBox 的代码:

希望有人可以提供帮助 - 我对这一切都很陌生,并且已经尝试了我能想到的所有内容,但我读过的所有内容都让我相信设置 ItemsSource 应该与手动设置项目具有相同的结果,所以我可以'看不出这不起作用的任何原因。

谢谢,

0 投票
1 回答
179 浏览

wpf - 如何将控件的属性设置为 xaml 中函数的地址?

我有一个具有“过滤器”属性的控件,该属性需要一个定义如何过滤控件内容的函数。到目前为止,我在后面的代码中设置了过滤器:

MyControl.Filter = AddressOf Filters.MyFilter

在此示例中,MyFilter 是 Filters 类中的一个共享函数,具有以下签名:

Public Shared Function MyFilter(ByVal obj As Object, ByVal text As String) As Boolean

我想在 xaml 中设置它。我正在考虑将 Filters.MyFilter 设置为静态资源并以这种方式设置:

...Filter="{StaticResource myFilter}"/>

但我不能将 Filters.MyFilter 设置为静态资源。关于如何实现这一目标的任何想法?

谢谢,

0 投票
4 回答
1195 浏览

wpf - WPF DataGrid:每行资源?

有没有办法在 DataGrid 中为每行设置一个 StaticResource,从所有列访问它?


更新
我的目标是拥有 3 个 ComboBox 列,而实际上只有最后一个绑定到行项目。
例如,DataGrid 表示项目列表。我有Category->Vendor->Style->Finish ComboBoxes,但这些仅用于导航辅助,实际上,Item 类只有“Finish”关系。因此,如果每行有一个 StaticResource,我可以设置 ComboBox 的 ItemsSource 和 IsSynchronizedWithCurrentItem 道具,这将自动工作。

非常感谢。