FrameworkElement.FindResource(Object) 方法

定义

搜索具有指定密钥的资源,如果未找到请求的资源,则会引发异常。

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

所请求资源的键标识符。

返回

所请求的资源。 如果未找到具有所提供键的资源,将引发异常。 在发生异常的情况下,可能还会返回一个 UnsetValue 值。

例外

找不到 resourceKey,且事件管理器对于 UnhandledException 事件不存在。

- 或 -

找不到 resourceKey,且 Handled 属性在 UnhandledException 事件中为 false

resourceKeynull

示例

以下示例获取一个命名资源,并将其强制转换为适当的类型以填充属性。

void SetBGByResource(object sender, RoutedEventArgs e)
{
  Button b = sender as Button;
  b.Background = (Brush)this.FindResource("RainbowBrush");
}
Private Sub SetBGByResource(ByVal sender As Object, ByVal e As RoutedEventArgs)
  Dim b As Button = TryCast(sender, Button)
  b.Background = CType(Me.FindResource("RainbowBrush"), Brush)
End Sub

注解

重要

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

如果在调用元素上找不到资源,则接下来搜索逻辑树中的父元素,然后搜索应用程序、主题,最后搜索系统资源。 如果资源是由标记中的动态资源引用请求的,则此查找方法与树的搜索方式相同。 有关资源查找的详细信息,请参阅 XAML 资源

通常,会立即将 FindResource 返回值强制转换为使用返回的资源值设置的属性的类型。

资源键不一定是字符串。 例如,主题级别的控件的样式被故意键控到 Type 控件的 ,而控件的应用程序或页面样式通常使用相同的键约定。 有关详细信息,请参阅 样式设置和模板化XAML 资源

适用于

另请参阅