سؤال

ولدي مجموعة من الأساليب وفرش تعريفها في ResourceDictionary أنني تحميل باعتباره MergedDictionary في XAML من إرادتي المستوى الأعلى:

<ResourceDictionary.MergedDictionaries>
     <ResourceDictionary Source="/MyAssembly;component/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>

واني اسعى الى <م> اختياريا استبدال بعض من هذه الأنماط والفرش في حالة وجود ملف XAML مختلفة في XAP مع ResourceDictionary الخاصة به. واني اسعى الى دمج في هذا القاموس في وقت التشغيل قبل InitializeComponent () يسمى على التحكم المستخدم الخاص بي. أنا باستخدام التعليمات البرمجية التالية في محاولة للقيام بذلك:

public static class StyleLoader
{
    public static void MergeStyle(string xamlUri)
    {
        try
        {
            XDocument xaml = XDocument.Load(xamlUri);
            ResourceDictionary rd = XamlReader.Load(xaml.ToString()) as ResourceDictionary;
            Application.Current.Resources.MergedDictionaries.Add(rd);

        }
        catch (XmlException ex)
        {
            // if the file doesn't exist, we can't add it
        }
    }
}

والقاموس المورد من ملف اختياري على ما يرام تحميل ودمج، ولكن بلدي المجموعة الأصلية من الأساليب يبدو دائما أن تجاوز هذا. إذا كنت التعليق خارج القاموس المدمج في XAML وببساطة تحميلها في وقت التشغيل من أجل أنها تعمل تماما:

    StyleLoader.MergeStyle("/MyAssembly;component/Styles.xaml");
    StyleLoader.MergeStyle("BrushReplacements.xaml");

    InitializeComponent();

ومشكلتي مع هذا الحل هو أنه من دون الأنماط الافتراضية في XAML، لا أستطيع فتح المشروع في مزيج. أي شخص لديه أي أفكار عن حل من شأنها أن تبقي الأنماط الافتراضية بلدي المعروف أن مزيج لكن اسمحوا لي أن تجاوز اختياريا لهم في وقت التشغيل مع القاموس الموارد تحميل حيوي؟ شكرا!

هل كانت مفيدة؟

المحلول

وهنا هو الحل حيث يتم تطبيق الألوان / فرش مع الارتباطات بدلا من الإشارة مباشرة إلى موارد ثابتة:
http://blogs.msdn.com/corrinab/archive/ 2009/11/24 / 9927729.aspx
الجزء الثاني:
http://blogs.msdn.com/corrinab/archive/ 2009/12/02 / 9931283.aspx

وحاليا أعتقد أن شيئا من هذا القبيل هو أفضل وسيلة للتعامل مع موضوعات التحول بشكل حيوي في وقت التشغيل. ولكنها لا تتطلب الكثير من العمل لميناء تطبيق موجود لاستخدام آلية من هذا القبيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top