如何在代码隐藏中引用StaticResource?

Jer*_*xon 14 winrt-xaml

在XAML中,我这样做:

<Button Style="{StaticResource NavigationBackButtonNormalStyle}" />
Run Code Online (Sandbox Code Playgroud)

如何在代码隐藏中执行相同的操作?

Jer*_*xon 20

页面级Resources对象能够查找本地,应用程序级别,静态和主题资源.这意味着你只需这样做:

foo2.Style = this.Resources["NavigationBackButtonNormalStyle"] as Style;
Run Code Online (Sandbox Code Playgroud)

祝你好运!


小智 16

尝试用这个

Application.Current.Resources["key"]
Run Code Online (Sandbox Code Playgroud)

  • 与此线程上的既定答案相比,您的方法有哪些好处? (2认同)
  • @JeremyCaney 本地资源对我来说不包含 StaticResources。 (2认同)

Jos*_*den 8

在设计时,似乎尝试解析"系统资源"使用Resources[key]将无法找到资源并将返回null.例如,为了获得基本StyleTextBox使用 Resources[typeof(TextBox)]将返回null.

相反,使用,TryFindResource(key)因为这将首先尝试 Resources[key],然后将尝试搜索"系统资源",并将返回您正在寻找的(根据MSDN参考源).

换句话说,请尝试这样做:

var style = Application.Current.TryFindResource(key) as Style;
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于 WPF - Xamarin 不存在 (3认同)