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;
}