Esempio n. 1
0
        public void ApplySkin(SkinDescription skin)
        {
            var oldSkinDefinition = Application.Current.Properties["CurrentSkin"] as ResourceDictionary;

            if (oldSkinDefinition != null)
            {
                Application.Current.Resources.MergedDictionaries.Remove(oldSkinDefinition);
            }
            if (skin.Name != DefaultSkinName)
            {
                ResourceDictionary newSkinDefinition = null;
                var newSkinPath = "Skins/" + skin.Name + "/Style.xaml";
                using (FileStream s = File.OpenRead(newSkinPath))
                {
                    newSkinDefinition = (ResourceDictionary)XamlReader.Load(
                        s,
                        new ParserContext
                    {
                        BaseUri = new Uri("pack://application:,,,/" + newSkinPath,
                                          UriKind.Absolute),
                    });
                }
                if (newSkinDefinition != null)
                {
                    Application.Current.Resources.MergedDictionaries.Add(newSkinDefinition);
                    Application.Current.Properties["CurrentSkin"] = newSkinDefinition;
                }
            }
            Application.Current.Properties["CurrentSkinDescription"] = LoadSkinDescription(skin.Name) ?? LoadSkinDescription("Default");
        }
Esempio n. 2
0
        private SkinDescription LoadSkinDescription(string skinName)
        {
            SkinDescription skinDescription = null;
            var             skinPath        = "Skins/" + skinName + "/Description.xaml";

            try
            {
                skinDescription = Application.LoadComponent(new Uri("/xpdm.Catan;component/" + skinPath, UriKind.Relative)) as SkinDescription;
            }
            catch (IOException)
            {
                /* Handle IOException by assuming component doesn't exist. Swallow error and trace.*/
                Trace.TraceInformation("Skin description '{0}' not a component.", skinName);
            }
            if (skinDescription != null)
            {
                skinDescription.Name = skinName;
                return(skinDescription);
            }

            if (File.Exists(skinPath))
            {
                using (FileStream s = File.OpenRead(skinPath))
                {
                    skinDescription = (SkinDescription)XamlReader.Load(s, new ParserContext {
                        BaseUri = new Uri("pack://application:,,,/" + skinPath, UriKind.Absolute)
                    });
                }
            }
            if (skinDescription == null)
            {
                return(new SkinDescription
                {
                    Name = skinName,
                    DisplayName = skinName,
                    Preview = (Visual)Application.Current.TryFindResource("DefaultSkinPreview"),
                });
            }
            skinDescription.Name = skinName;
            return(skinDescription);
        }
Esempio n. 3
0
        public void ApplySkin(SkinDescription skin)
        {
            var oldSkinDefinition = Application.Current.Properties["CurrentSkin"] as ResourceDictionary;
            if (oldSkinDefinition != null)
            {
                Application.Current.Resources.MergedDictionaries.Remove(oldSkinDefinition);
            }
            if (skin.Name != DefaultSkinName)
            {
                ResourceDictionary newSkinDefinition = null;
                var newSkinPath = "Skins/" + skin.Name + "/Style.xaml";
                using (FileStream s = File.OpenRead(newSkinPath))
                {
                    newSkinDefinition = (ResourceDictionary)XamlReader.Load(
                        s,
                        new ParserContext 
                        { 
                            BaseUri = new Uri("pack://application:,,,/" + newSkinPath, 
                                UriKind.Absolute), 
                        });
                }
                if (newSkinDefinition != null)
                {
                    Application.Current.Resources.MergedDictionaries.Add(newSkinDefinition);
                    Application.Current.Properties["CurrentSkin"] = newSkinDefinition;
                }
            }
            Application.Current.Properties["CurrentSkinDescription"] = LoadSkinDescription(skin.Name) ?? LoadSkinDescription("Default");

        }