c# - WinRT平台是否可以根据目标类型获取资源

标签 c# xaml windows-runtime winrt-xaml winrt-component

在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/

相关文章:

c# - 在 ASP.NET 中禁用 JavaScript 时如何处理验证

c# - 如何在 Xaml 文件的 Xamarin.Forms 中添加复选框?

c# - 本地化 VirtualKey.Control (WinRT)

c++ - 如果删除未使用的引用类,则 DLL 无法加载

UWP 组合 API : Rounded Corners?

c# - 如何从表达式中获取所有最小真实条件

java - 无法从 Oracle 调用 dll

c# - 使用反射进行深度扫描 - 有更好的方法吗?

wpf - 将样式应用于 ListBoxItem 而不影响内部的 ComboboxItem

c# - 是否可以将参数(绑定(bind))传递给 WPF 样式