Application.FindResource(Object) 方法

定义

使用指定的键搜索用户界面 (UI) 资源(如 StyleBrush),如果找不到请求的资源,则引发异常 (请参阅 XAML 资源) 。

public:
 System::Object ^ FindResource(System::Object ^ resourceKey);
public object FindResource (object resourceKey);
member this.FindResource : obj -> obj
Public Function FindResource (resourceKey As Object) As Object

参数

resourceKey
Object

要查找的资源名。

返回

所请求的资源对象。 如果未找到所请求的资源,则引发 ResourceReferenceKeyNotFoundException

例外

示例

以下示例演示如何使用 FindResource 查找资源,以及如何处理 ResourceReferenceKeyNotFoundException 是否找不到资源。

void findResourceButton_Click(object sender, RoutedEventArgs e) {
  try {
    object resource = Application.Current.FindResource("UnfindableResource");
  }
  catch (ResourceReferenceKeyNotFoundException ex) {
    MessageBox.Show("Resource not found.");
  }
}
Private Sub findResourceButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
  Try
    Dim resource As Object = Application.Current.FindResource("UnfindableResource")
  Catch ex As ResourceReferenceKeyNotFoundException
    MessageBox.Show("Resource not found.")
  End Try
End Sub

注解

FindResource 将首先查找指定资源的应用程序范围资源。 应用程序范围资源由 Application管理,并且从 Resources 属性公开。 如果在应用程序范围资源集中找不到指定的资源, FindResource 则接下来搜索系统资源。 系统资源是用户定义的 shell 资源,包括颜色、字体和 shell 配置。 它们分别从 SystemColorsSystemFontsSystemParameters 类型公开为静态属性。 为了使用 FindResource 获取它们,这些类型还公开了设计为传递给 FindResource的资源键属性;例如 。 IconWidthKey

由于 FindResource 返回对象,因此如果找到资源,则必须将返回的值强制转换为适当的类型。

重要

如果为找不到的密钥调用此方法,则会引发异常。 如果不想处理由调用 FindResource引起的异常,请改为调用 TryFindResource ; TryFindResource 在找不到请求的资源时返回 null 引用,并且不会引发异常。

此方法是线程安全的,可以从任何线程调用。

适用于

另请参阅