gpt4 book ai didi

.net - 为什么 FrameworkElement 的 FindResource() 方法接受对象而不是字符串?

转载 作者:行者123 更新时间:2023-12-02 06:24:36 25 4
gpt4 key购买 nike

我知道在 FrameworkElement(例如窗口)上调用 FindResource() 可用于在 FrameworkElement 的 ResourceDictionary 中查找资源。

例如,我已经多次使用它通过代码访问一个Style,动态地向该Style添加一个新的Setter。我总是将 Style 的 x:Key 值作为字符串传递给 FindResource() 方法。喜欢... Style style = w.FindResource("GridDescriptionColumn") as Style;
我的问题是,我注意到 FindResource() 接受对象类型的参数而不是字符串类型的参数。我一生都想不出我会用一个不是字符串的参数调用 FindResource() 的原因。这让我觉得我可能不知道使用 FindResource() 的其他方法。

有谁知道为什么 FindResource() 接受对象的参数类型而不是字符串?如果是这样,使用字符串以外的参数类型调用 FindResource() 的示例是什么?

谢谢。

最佳答案

资源可以有任何对象作为键。在后面的代码中添加带有对象键的资源很容易并且很有用。在 XAML 中,大多数情况下您使用字符串作为 x:Key .然而,有一种常见的情况是键不是字符串,您甚至可能在没有意识到的情况下使用了它:
Style没有 x:Key ,它应用于其 TargetType 的每个实例.但是编译器添加了一个隐式键:TargetType的类型本身。
总之,写<Style TargetType="{x:Type Button}" />在资源部分与写作完全相同 <Style TargetType="{x:Type Button}" x:Key="{x:Type Button}" /> .要从代码中取回此资源,您必须使用 FindResource(typeof(Button)) ,通过 Type而不是 string .

关于.net - 为什么 FrameworkElement 的 FindResource() 方法接受对象而不是字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2999295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com