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# - 在 WPF 中显示 BitmapSource 不起作用

c# - 正则表达式 - 删除跨越多个换行符的 HTML 注释

c# - Automapper 将 ICollection<T> 映射到单个具体对象

windows - 如何更改 UWP 中 ListView 中默认选定的焦点背景颜色?

c++ - 如何在 Windows 应用商店应用程序中从 C++ 访问 System.Environment?

email - 通过 Windows 8 Metro 应用程序发送电子邮件的可用选项?

c# - W10 UWP - 将远程图像设置为桌面墙纸/锁屏

c# - .NET 控制台应用程序作为 Windows 服务

c# - 强制文本长度 + 修剪

c# - ListView WPF 上的页脚