如何从应用程序访问命名资源.代码隐藏中的资源

本文关键字:资源 代码 隐藏 应用程序 访问 | 更新日期: 2023-09-27 18:04:39

在这个Silverlight应用程序中,我试图从应用程序访问资源。MainPage类中的资源。资源有x:Name属性,而不是x:Key。

我知道我可以从应用程序中分配一个键控资源。

grid1.Background = (LinearGradientBrush)Application.Current.Resources["KeyedTwoColorGradient"];

使用这个逻辑,我试图为我的网格分配一个命名资源。背景和用途:

grid1.Background = ((LinearGradientBrush)Application.Current).Resources.NamedTwoColorGradient;

这行代码给了我一个错误:无法转换类型"System.Windows"。Application' to 'System.Windows.Media.LinearGradientBrush'

我也试过不同的行,但没有工作。我在别处找不到答案,所以我带着这个问题来到这里。

另外,谁能告诉我什么时候使用Named资源比较合适,什么时候使用Keyed资源比较好?

如何从应用程序访问命名资源.代码隐藏中的资源

首先你的括号在错误的地方在你的例子(你实际上是铸造一个应用程序对象到一个LinearBrush),例如:

 ((LinearGradientBrush)Application.Current)

,但"正确"的语法将自动完成,但将不是编译:

(Application.Current as App).KeyedTwoColorGradient;

问题是App.xaml没有designer.cs对应,不像用户控件,所以命名的成员只对智能感知可见,实际上没有代码隐藏属性。