Xaml 如何从代码访问位于合并字典中的资源

Xaml 如何从代码访问位于合并字典中的资源,xaml,xamarin.forms,Xaml,Xamarin.forms,我有一堆颜色在两个资源目录中如下: <ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:s="clr-namespace:System;assembly=netstandard"> <Col

我有一堆
颜色
在两个
资源目录中
如下:

<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
                    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                    xmlns:s="clr-namespace:System;assembly=netstandard">

    <Color x:Key="Color.Background">#301536</Color>
</ResourceDictionary>
resourcedicitory
文件只是一个
.xaml
文件,没有任何捆绑的
.cs
,这两个词典都在
App.xaml
上设置,而不必在
合并词典
组中定义它们

当试图从代码中访问a
颜色时,我找不到它,看起来它没有添加到资源列表中

var color = Application.Current.Resources.FirstOrDefault(f => f.Key == "Color.Background")
    .Value as Color? ?? Color.Crimson;
有没有办法访问WPF中可用的
FindResource/TryFindResource
之类的资源



我还试图访问/查看
合并词典的内容,但由于某些原因,合并词典总是空的。

根据您的描述,您希望在APP.xaml中添加多个ResourceDictionary,但它不起作用。 我找到一篇关于这个问题的文章,你可以看一下:


多亏了另一个人,我才能够构建这个工作代码:

internal static Color TryGetColor(string key, Color fallback)
{
    Application.Current.Resources.TryGetValue(key, out var color);

    return color as Color? ?? fallback;
}

如果您想从资源字典中访问颜色,它应该类似于
var color=(color)App.Current.Resources[“color.Background”]然后使用颜色变量。这和我做的一样,但是没有错误检查。我正在从应用程序类调用资源。无法从合并词典中访问密钥。抱歉,我没有读到您没有
.cs
,我认为在这种情况下,无法通过代码访问资源,也许您应该手动应用颜色。
internal static Color TryGetColor(string key, Color fallback)
{
    Application.Current.Resources.TryGetValue(key, out var color);

    return color as Color? ?? fallback;
}