在Class中使用Application.Resources

时间:2009-09-07 10:47:17

标签: wpf resources

我不知道如何在代码中使用已定义的应用程序样式资源。 我已定义:

<Application.Resources> <Style x:Key="OrangeButton" TargetType="{x:Type Button}">

我在我的应用程序的XAML部分中使用此资源,如:

<Button Name="Button_Start" style="{StaticResource OrangeButton}" Margin="0">

它工作正常,我也可以通过代码

更改按钮样式
Button_Start.Style = CType(FindResource("RedButton"), Style)

但仅限于我创建新项目时自动创建的VB文件。如果我添加一个新的类文件并尝试执行相同的操作,则说:

Name 'FindResource' is not declared

因此,我的问题是,如何在我的应用程序中的所有不同类文件中使用Application资源。

彼得

2 个答案:

答案 0 :(得分:3)

FindResource方法由FrameworkElement类定义,因此只有在您的类扩展了它或者您有一个FrameworkElement实例才能从中开始资源查找时它才可用

但是,如果您知道自己的资源位于Application级别,则可以使用TryFindResourceResources,如下所示(C#,但应该很容易推断出VB):

object resource;

if (Application.Current.TryFindResource("RedButton", out resource))
{
    Style indirectStyle = (Style)resource;
}

//or use this
Style directStyle = Applications.Current.Resources["RedButton"] as Style;

答案 1 :(得分:0)

感谢您的回答,我不确定我是否理解您所写的内容,但我现在可以使用代码

    MyButton.Style = CType(Application.Current.Resources("GreenButton"), Style)

非常好。 彼得