簡體   English   中英

Mermarin.Forms MergedDictionaries

[英]Xamarin.Forms MergedDictionaries

我創建了幾個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#中獲得定義的樣式?

這很奇怪,但我注意到我們現在只能使用TryGetValue方法訪問位於MergedDictionaries中的資源:

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

     //Edit your style
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM