在WPF中我们可以根据目标类型获取样式,如下所示:
control.Style = (Style)toplevelcontrol.TryFindResource(typeof(control))
但在 WinRT 中我不能那样做。我只能使用 key 来获取资源。是否可以根据目标类型获取资源? 请帮我解决这个问题。
提前致谢
最佳答案
WPF 和 Winrt 在处理资源方面的主要区别在于,您在 WPF 对象中获得 FindResource()
和同级对象,而在 Winrt 中您只有 Resources
属性(property)。
将对象类型用作 TargetType
样式的键的基本技术仍然有效。这是一个简单的辅助扩展方法来做你想做的事:
public static object TryFindResource(this FrameworkElement element, object key)
{
if (element.Resources.ContainsKey(key))
{
return element.Resources[key];
}
return null;
}
像在 WPF 中一样调用:
control.Style = (Style)toplevelcontrol.TryFindResource(control.GetType());
(请注意,您的原始示例无法编译,因为 control
是一个变量,您不能对变量使用 typeof
。我已经修复了这个错误在上面的示例调用中)。
关于c# - WinRT平台是否可以根据目标类型获取资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30941664/