我可以在运行时将“StaticResource”应用于元素吗?
我知道我可以在xaml文件中使用“StaticResource”元素。但是,我想知道如何在C#(代码隐藏)中使用它。
答案 0 :(得分:3)
StaticResource
是一个静态定义的资源,通常在<X.Resources>
元素中为任何元素或页面定义。
在C#中,您只需使用X.Resources["MyResource"]
访问它,就像您应该{StaticResource MyResource}
一样。
答案 1 :(得分:2)
并非真正具有相同的含义。 StaticResources
是“静态的”,因为它们的值在Xaml解析期间被解析。 XamlParser将通过检查资源字典来解析资源,该资源字典还包含相同xaml 中的祖先FrameworkElement
Resource
属性,然后在必要时检查Application.Resources。
如果您碰巧知道在哪里找到要使用C#代码分配的资源,那么就像在Claus的答案中一样简单。但是,如果您只知道资源的名称,而不知道它在哪个字典中找到的那么多的小问题。
可以使用VisualTreeHelper
查看所有Resource
来编写一个例程(您可以在SO或Web上的其他位置找到一个例程)来查找可视树。物业沿途。你可能可以逃脱这一点,但请注意,这可能会搜索比原始Xaml版本更多的词典,并且它可能会让你获得一些意想不到的价值。