首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.Forms MergedDictionaries

Xamarin.Forms MergedDictionaries
EN

Stack Overflow用户
提问于 2018-07-24 12:27:11
回答 1查看 907关注 0票数 4

我创建了几个XAML样式,并将它们全部添加到App.xaml.cs中作为MergedDictionaries

代码语言:javascript
复制
<?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的样式时,这个解决方案都是有效的,即:

代码语言:javascript
复制
<Label TextColor="{StaticResource Test1}"/>

但是,我希望创建动态资源,在这种情况下,我需要替换C#中的样式。问题是

Application.Current.Resources

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-07-24 20:59:03

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

代码语言:javascript
复制
 if (Application.Current.Resources.TryGetValue("StyleResourceKey", out var objectStyle))
 {
     var style = (Style)objectStyle;

     //Edit your style
 }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51498627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档