我创建了几个XAML样式,并将它们全部添加到App.xaml.cs中作为MergedDictionaries
<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Axon.Mobile.App">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ResourceDictionaries/Colors.xaml"/>
<ResourceDictionary Source="ResourceDictionaries/GlobalStylesDictionary.xaml"/>
<ResourceDictionary Source="ResourceDictionaries/KeyStylesDictionary.xaml"/>
<ResourceDictionary Source="ResourceDictionaries/ReceptionStylesDictionary.xaml"/>
<ResourceDictionary Source="ResourceDictionaries/PutAwayStylesDictionary.xaml"/>
<ResourceDictionary Source="ResourceDictionaries/ViewModelLocatorDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>当我使用在任何字典中定义为StatisResouce的样式时,这个解决方案都是有效的,即:
<Label TextColor="{StaticResource Test1}"/>但是,我希望创建动态资源,在这种情况下,我需要替换C#中的样式。问题是
Application.Current.Resources
将这6个字典包含为MergedDictionary属性。所有给定的字典都是空的。
为什么我不能在C#中获得定义的样式?
发布于 2018-07-24 20:59:03
这很奇怪,但我注意到我们目前只能使用MergedDictionaries方法访问位于TryGetValue中的资源:
if (Application.Current.Resources.TryGetValue("StyleResourceKey", out var objectStyle))
{
var style = (Style)objectStyle;
//Edit your style
}https://stackoverflow.com/questions/51498627
复制相似问题