我创建了一些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#中的样式。问题是


  应用程序。当前。资源


包含这另外6个字典作为MergedDictionary属性。所有给定的词典都是空的。

为什么我无法在C#中获得定义的样式?

最佳答案

这很奇怪,但是我注意到我们目前只能使用TryGetValue方法访问位于MergedDictionaries中的资源:

 if (Application.Current.Resources.TryGetValue("StyleResourceKey", out var objectStyle))
 {
     var style = (Style)objectStyle;

     //Edit your style
 }

09-25 17:22