我在Colors
中有很多ResourceDicitonaries
,像这样:
<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>
我只是将两者都添加到App.xaml
中,就像这样:
<!--Colors-->
<ResourceDictionary Source="Resources/Colors/Light.xaml"/>
<ResourceDictionary Source="Resources/Colors/Dark.xaml"/>
ResourceDicitonary
文件只是一个.xaml
文件,没有任何捆绑的.cs
,并且两个字典都设置在App.xaml
上,而不必在MergedDicionaries
组。
尝试从代码中访问Color
时,找不到它,好像它没有添加到资源列表中。
var color = Application.Current.Resources.FirstOrDefault(f => f.Key == "Color.Background")
.Value as Color? ?? Color.Crimson;
有什么方法可以访问WPF中可用的资源FindResource/TryFindResource
?
我也尝试访问/查看MergedDictionaries
的内容,但是由于某些原因,合并的字典始终为空。
答案 0 :(得分:0)
根据您的描述,您想要在APP.xaml中添加多个ResourceDictionary,它不起作用。 我发现一篇有关此问题的文章,您可以看一下:
答案 1 :(得分:0)
感谢另一个人,我得以构建此工作代码:
internal static Color TryGetColor(string key, Color fallback)
{
Application.Current.Resources.TryGetValue(key, out var color);
return color as Color? ?? fallback;
}