public object Convert()

in Tools/Apps/Microsoft.PowerApps.ThemeEditor/Converters/KeyToFontConverter.cs [14:51]


        public object Convert(object value, Type targetType,
            object parameter, CultureInfo culture)
        {
            MainViewModel model = ServiceLocator.Current.GetInstance<MainViewModel>();

            if (parameter != null)
            {
                string[] substrings = parameter.ToString().Split(new char[] { '.' });
                if (substrings.Length > 1)
                {
                    string style = substrings[0];
                    string property = substrings[1];

                    var palettes = model.Palettes;

                    if (palettes != null)
                    {
                        var currentStyle = model.Styles.SingleOrDefault(s => s.name == style);

                        if (currentStyle != null && currentStyle.propertyValuesMap != null && currentStyle.propertyValuesMap.SingleOrDefault(s => s.property == property) != null)
                        {
                            string key = currentStyle.propertyValuesMap.SingleOrDefault(s => s.property == property).value.Replace("Palette.", "").Replace("%", "");

                            PaletteViewModel palette = palettes.FirstOrDefault(s => s.name == key);
                            if (palette == null) return model.Fonts.First();
                            string paFontName = palette.value.ToString();
                            paFontName = paFontName.Replace(FontReservedPrefix, "");
                            paFontName = paFontName.Replace("'", "");
                            var font = model.Fonts.SingleOrDefault(f => f.Source == paFontName);
                            if (font != null)
                                return model.Fonts.SingleOrDefault(f => f.Source == paFontName);
                            else return model.Fonts.First();
                        }
                    }
                }
            }
            return model.Fonts.First();
        }