コード例 #1
0
        private void DrawProgressBar(SkinButtonState state)
        {
            var progressBar = (SkinProgressBar)SkinElement;
            var art         = new SkinArtImage();

            switch (state)
            {
            case SkinButtonState.Normal:
                art = progressBar.Art.Images.Any(t => t.Type == "UnfilledImage") ? progressBar.Art.Images.First(t => t.Type == "UnfilledImage") : new SkinArtImage();
                break;

            case SkinButtonState.Focused:
                art = progressBar.Art.Images.Any(t => t.Type == "FilledImage" && !string.IsNullOrEmpty(t.Type))
                        ? progressBar.Art.Images.First(t => t.Type == "FilledImage")
                        : (progressBar.Art.Images.Any(t => t.Type == "UnfilledImage") ? progressBar.Art.Images.First(t => t.Type == "UnfilledImage") : new SkinArtImage());
                break;
            }
            var img = (BitmapImage)Core.GetImageSourceFromFileName(SkinController.GetFullPath(art.Path));

            //+ Формирование шаблона контрола
            var xamlGrid   = new FrameworkElementFactory(typeof(Grid));
            var xamlBorder = new FrameworkElementFactory(typeof(Border));
            var xamlImage  = new FrameworkElementFactory(typeof(Image));

            xamlImage.SetValue(WidthProperty, (double)img.PixelWidth);
            xamlImage.SetValue(HeightProperty, (double)img.PixelHeight);
            xamlImage.SetValue(Image.SourceProperty, img);
            xamlGrid.AppendChild(xamlImage);
            xamlBorder.AppendChild(xamlGrid);
            Template = new ControlTemplate {
                VisualTree = xamlBorder
            };
            //- Формирование шаблона контрола
        }
コード例 #2
0
        private void DrawSlider(SkinButtonState state)
        {
            var slider = (SkinSlider)SkinElement;
            var art    = new SkinArtImage();
            var art2   = new SkinArtImage();

            switch (state)
            {
            case SkinButtonState.Normal:
                art  = slider.Art.Images.Any(t => t.Type == "BackgroundImage") ? slider.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                art2 = slider.Art.Images.Any(t => t.Type == "FocusedImage") ? slider.Art.Images.First(t => t.Type == "FocusedImage") : new SkinArtImage();
                break;

            case SkinButtonState.Clicked:
                art  = slider.Art.Images.Any(t => t.Type == "BackgroundImage") ? slider.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                art2 = slider.Art.Images.Any(t => t.Type == "FocusedImage") ? slider.Art.Images.First(t => t.Type == "FocusedImage") : new SkinArtImage();
                break;

            case SkinButtonState.Focused:
                art  = slider.Art.Images.Any(t => t.Type == "BackgroundImage") ? slider.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                art2 = slider.Art.Images.Any(t => t.Type == "FocusedImage") ? slider.Art.Images.First(t => t.Type == "FocusedImage") : new SkinArtImage();
                break;
            }
            var img  = (BitmapImage)Core.GetImageSourceFromFileName(SkinController.GetFullPath(art.Path));
            var img2 = (BitmapImage)Core.GetImageSourceFromFileName(SkinController.GetFullPath(art2.Path));

            //+ Формирование шаблона контрола
            var xamlGrid   = new FrameworkElementFactory(typeof(Grid));
            var xamlBorder = new FrameworkElementFactory(typeof(Border));
            var xamlImage  = new FrameworkElementFactory(typeof(Image));

            xamlImage.SetValue(WidthProperty, (double)img.PixelWidth);
            xamlImage.SetValue(HeightProperty, (double)img.PixelHeight);
            xamlImage.SetValue(Image.SourceProperty, img);
            xamlGrid.AppendChild(xamlImage);
            xamlBorder.AppendChild(xamlGrid);
            var xamlImage2 = new FrameworkElementFactory(typeof(Image));

            xamlImage2.SetValue(Image.SourceProperty, img2);
            xamlImage2.SetValue(HorizontalAlignmentProperty, state == SkinButtonState.Clicked ? HorizontalAlignment.Right : HorizontalAlignment.Center);
            xamlImage2.SetValue(WidthProperty, (double)img2.PixelWidth);
            xamlGrid.AppendChild(xamlImage2);
            Template = new ControlTemplate {
                VisualTree = xamlBorder
            };
            //- Формирование шаблона контрола
        }
コード例 #3
0
        private void DrawBrowser(SkinButtonState state)
        {
            var browser = (SkinBrowser) SkinElement;
            var pos = SkinController.SelectedWindow.ColorPositions.Any(t => t.MapColor == Core.MapColor2Color(browser.MapColor))
                ? SkinController.SelectedWindow.ColorPositions.First(t => t.MapColor == Core.MapColor2Color(browser.MapColor))
                : new ColorPosition();

            //+ Формирование шаблона контрола
            var xamlGrid = new FrameworkElementFactory(typeof(Grid));
            var xamlBorder = new FrameworkElementFactory(typeof(Border));
            xamlBorder.SetValue(Border.BorderThicknessProperty, browser.NoBorder ? new Thickness(0) : new Thickness(2));
            var xamlWebBrowser = new FrameworkElementFactory(typeof(WebBrowserBindable));
            xamlWebBrowser.SetValue(WebBrowserBindable.NavigationUrlProperty, browser.InitUrl);
            xamlWebBrowser.SetValue(WidthProperty, pos.Width);
            xamlWebBrowser.SetValue(HeightProperty, pos.Height);
            xamlGrid.AppendChild(xamlWebBrowser);
            xamlBorder.AppendChild(xamlGrid);
            Template = new ControlTemplate { VisualTree = xamlBorder };
            //- Формирование шаблона контрола
        }
コード例 #4
0
        private void DrawBrowser(SkinButtonState state)
        {
            var browser = (SkinBrowser)SkinElement;
            var pos     = SkinController.SelectedWindow.ColorPositions.Any(t => t.MapColor == Core.MapColor2Color(browser.MapColor))
                ? SkinController.SelectedWindow.ColorPositions.First(t => t.MapColor == Core.MapColor2Color(browser.MapColor))
                : new ColorPosition();

            //+ Формирование шаблона контрола
            var xamlGrid   = new FrameworkElementFactory(typeof(Grid));
            var xamlBorder = new FrameworkElementFactory(typeof(Border));

            xamlBorder.SetValue(Border.BorderThicknessProperty, browser.NoBorder ? new Thickness(0) : new Thickness(2));
            var xamlWebBrowser = new FrameworkElementFactory(typeof(WebBrowserBindable));

            xamlWebBrowser.SetValue(WebBrowserBindable.NavigationUrlProperty, browser.InitUrl);
            xamlWebBrowser.SetValue(WidthProperty, pos.Width);
            xamlWebBrowser.SetValue(HeightProperty, pos.Height);
            xamlGrid.AppendChild(xamlWebBrowser);
            xamlBorder.AppendChild(xamlGrid);
            Template = new ControlTemplate {
                VisualTree = xamlBorder
            };
            //- Формирование шаблона контрола
        }
コード例 #5
0
        private void DrawSlider(SkinButtonState state)
        {
            var slider = (SkinSlider) SkinElement;
            var art = new SkinArtImage();
            var art2 = new SkinArtImage();
            switch (state) {
                case SkinButtonState.Normal:
                    art = slider.Art.Images.Any(t => t.Type == "BackgroundImage") ? slider.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                    art2 = slider.Art.Images.Any(t => t.Type == "FocusedImage") ? slider.Art.Images.First(t => t.Type == "FocusedImage") : new SkinArtImage();
                    break;
                case SkinButtonState.Clicked:
                    art = slider.Art.Images.Any(t => t.Type == "BackgroundImage") ? slider.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                    art2 = slider.Art.Images.Any(t => t.Type == "FocusedImage") ? slider.Art.Images.First(t => t.Type == "FocusedImage") : new SkinArtImage();
                    break;
                case SkinButtonState.Focused:
                    art = slider.Art.Images.Any(t => t.Type == "BackgroundImage") ? slider.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                    art2 = slider.Art.Images.Any(t => t.Type == "FocusedImage") ? slider.Art.Images.First(t => t.Type == "FocusedImage") : new SkinArtImage();
                    break;
            }
            var img = (BitmapImage) Core.GetImageSourceFromFileName(SkinController.GetFullPath(art.Path));
            var img2 = (BitmapImage) Core.GetImageSourceFromFileName(SkinController.GetFullPath(art2.Path));

            //+ Формирование шаблона контрола
            var xamlGrid = new FrameworkElementFactory(typeof(Grid));
            var xamlBorder = new FrameworkElementFactory(typeof(Border));
            var xamlImage = new FrameworkElementFactory(typeof(Image));
            xamlImage.SetValue(WidthProperty, (double) img.PixelWidth);
            xamlImage.SetValue(HeightProperty, (double) img.PixelHeight);
            xamlImage.SetValue(Image.SourceProperty, img);
            xamlGrid.AppendChild(xamlImage);
            xamlBorder.AppendChild(xamlGrid);
            var xamlImage2 = new FrameworkElementFactory(typeof(Image));
            xamlImage2.SetValue(Image.SourceProperty, img2);
            xamlImage2.SetValue(HorizontalAlignmentProperty, state == SkinButtonState.Clicked ? HorizontalAlignment.Right : HorizontalAlignment.Center);
            xamlImage2.SetValue(WidthProperty, (double) img2.PixelWidth);
            xamlGrid.AppendChild(xamlImage2);
            Template = new ControlTemplate { VisualTree = xamlBorder };
            //- Формирование шаблона контрола
        }
コード例 #6
0
        private void DrawProgressBar(SkinButtonState state)
        {
            var progressBar = (SkinProgressBar) SkinElement;
            var art = new SkinArtImage();
            switch (state) {
                case SkinButtonState.Normal:
                    art = progressBar.Art.Images.Any(t => t.Type == "UnfilledImage") ? progressBar.Art.Images.First(t => t.Type == "UnfilledImage") : new SkinArtImage();
                    break;
                case SkinButtonState.Focused:
                    art = progressBar.Art.Images.Any(t => t.Type == "FilledImage" && !string.IsNullOrEmpty(t.Type))
                        ? progressBar.Art.Images.First(t => t.Type == "FilledImage")
                        : (progressBar.Art.Images.Any(t => t.Type == "UnfilledImage") ? progressBar.Art.Images.First(t => t.Type == "UnfilledImage") : new SkinArtImage());
                    break;
            }
            var img = (BitmapImage) Core.GetImageSourceFromFileName(SkinController.GetFullPath(art.Path));

            //+ Формирование шаблона контрола
            var xamlGrid = new FrameworkElementFactory(typeof(Grid));
            var xamlBorder = new FrameworkElementFactory(typeof(Border));
            var xamlImage = new FrameworkElementFactory(typeof(Image));
            xamlImage.SetValue(WidthProperty, (double) img.PixelWidth);
            xamlImage.SetValue(HeightProperty, (double) img.PixelHeight);
            xamlImage.SetValue(Image.SourceProperty, img);
            xamlGrid.AppendChild(xamlImage);
            xamlBorder.AppendChild(xamlGrid);
            Template = new ControlTemplate { VisualTree = xamlBorder };
            //- Формирование шаблона контрола
        }
コード例 #7
0
        private void DrawComboBox(SkinButtonState state)
        {
            var comboBox = (SkinComboBox) SkinElement;
            var art = new SkinArtImage();
            switch (state) {
                case SkinButtonState.Normal:
                    art = comboBox.Art.Images.Any(t => t.Type == "BackgroundImage") ? comboBox.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                    break;
                case SkinButtonState.Clicked:
                    if (comboBox.Art.Images.Any(t => t.Type == "SelectedImage" && !string.IsNullOrEmpty(t.Type))) {
                        art = comboBox.Art.Images.First(t => t.Type == "SelectedImage");
                    } else {
                        art = comboBox.Art.Images.Any(t => t.Type == "ClickedImage" && !string.IsNullOrEmpty(t.Type))
                            ? comboBox.Art.Images.First(t => t.Type == "ClickedImage")
                            : (comboBox.Art.Images.Any(t => t.Type == "BackgroundImage") ? comboBox.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage());
                    }
                    break;
                case SkinButtonState.Focused:
                    art = comboBox.Art.Images.Any(t => t.Type == "HoverImage" && !string.IsNullOrEmpty(t.Type))
                        ? comboBox.Art.Images.First(t => t.Type == "HoverImage")
                        : (comboBox.Art.Images.Any(t => t.Type == "BackgroundImage") ? comboBox.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage());
                    break;
            }
            var img = (BitmapImage) Core.GetImageSourceFromFileName(SkinController.GetFullPath(art.Path));

            //+ Формирование шаблона контрола
            var xamlGrid = new FrameworkElementFactory(typeof(Grid));
            var xamlBorder = new FrameworkElementFactory(typeof(Border));
            var xamlImage = new FrameworkElementFactory(typeof(Image));
            xamlImage.SetValue(WidthProperty, (double) img.PixelWidth);
            xamlImage.SetValue(HeightProperty, (double) img.PixelHeight);
            xamlImage.SetValue(Image.SourceProperty, img);
            xamlGrid.AppendChild(xamlImage);
            if (!string.IsNullOrEmpty(comboBox.Text)) {
                var xamlTextBlock = new FrameworkElementFactory(typeof(TextBlock));
                xamlTextBlock.SetValue(TextBlock.TextProperty, comboBox.Text);
                xamlTextBlock.SetValue(HorizontalAlignmentProperty, HorizontalAlignment.Center);
                xamlTextBlock.SetValue(VerticalAlignmentProperty, VerticalAlignment.Center);
                if (SkinController.SkinApp.Styles.Any(t => t.Name == comboBox.Style)) {
                    var textStyle = SkinController.SkinApp.Styles.First(t => t.Name == comboBox.Style);
                    xamlTextBlock.SetValue(TextBlock.FontSizeProperty, textStyle.Height);
                    if (textStyle.Weight > 0)
                        xamlTextBlock.SetValue(TextBlock.FontWeightProperty, textStyle.Weight);
                    xamlTextBlock.SetValue(TextBlock.FontFamilyProperty, new FontFamily(textStyle.Face));
                    xamlTextBlock.SetValue(TextBlock.ForegroundProperty, Core.GetColorBrushFromString(textStyle.Default));
                }
                xamlGrid.AppendChild(xamlTextBlock);
            }
            xamlBorder.AppendChild(xamlGrid);
            Template = new ControlTemplate { VisualTree = xamlBorder };
            //- Формирование шаблона контрола
        }
コード例 #8
0
        private void DrawButton(SkinButtonState state)
        {
            var button = (SkinButton) SkinElement;
            var art = new SkinArtImage();
            switch (state) {
                case SkinButtonState.Normal:
                    art = button.Art.Images.Any(t => t.Type == "BackgroundImage") ? button.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                    break;
                case SkinButtonState.Clicked:
                    if (button.Art.Images.Any(t => t.Type == "SelectedImage" && !string.IsNullOrEmpty(t.Type))) {
                        art = button.Art.Images.First(t => t.Type == "SelectedImage");
                    } else {
                        art = button.Art.Images.Any(t => t.Type == "ClickedImage" && !string.IsNullOrEmpty(t.Type))
                            ? button.Art.Images.First(t => t.Type == "ClickedImage")
                            : (button.Art.Images.Any(t => t.Type == "BackgroundImage") ? button.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage());
                    }
                    break;
                case SkinButtonState.Focused:
                    art = button.Art.Images.Any(t => t.Type == "HoverImage" && !string.IsNullOrEmpty(t.Type))
                        ? button.Art.Images.First(t => t.Type == "HoverImage")
                        : (button.Art.Images.Any(t => t.Type == "BackgroundImage") ? button.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage());
                    break;
            }
            var img = (BitmapImage) Core.GetImageSourceFromFileName(SkinController.GetFullPath(art.Path));

            //+ Формирование шаблона контрола
            var xamlGrid = new FrameworkElementFactory(typeof(Grid));
            var xamlImage = new FrameworkElementFactory(typeof(Image));
            xamlImage.SetValue(WidthProperty, (double) img.PixelWidth);
            xamlImage.SetValue(HeightProperty, (double) img.PixelHeight);
            xamlImage.SetValue(Image.SourceProperty, img);
            xamlGrid.AppendChild(xamlImage);
            if (!string.IsNullOrEmpty(button.Text)) {
                var xamlTextBlock = new FrameworkElementFactory(typeof(TextBlock));
                xamlTextBlock.SetValue(TextBlock.TextProperty, string.IsNullOrEmpty(button.Text) ? button.Name : button.Text);
                var hAlign = HorizontalAlignment.Center;
                switch (button.Align) {
                    case SkinTextAligh.left: hAlign = HorizontalAlignment.Left; break;
                    case SkinTextAligh.right: hAlign = HorizontalAlignment.Right; break;
                }
                xamlTextBlock.SetValue(HorizontalAlignmentProperty, hAlign);
                xamlTextBlock.SetValue(VerticalAlignmentProperty, VerticalAlignment.Center);
                if (SkinController.SkinApp.Styles.Any(t=>t.Name == button.Style)) {
                    var textStyle = SkinController.SkinApp.Styles.First(t => t.Name == button.Style);
                    xamlTextBlock.SetValue(TextBlock.FontSizeProperty, textStyle.Height);
                    if (textStyle.Weight > 0)
                        xamlTextBlock.SetValue(TextBlock.FontWeightProperty, FontWeight.FromOpenTypeWeight((int) textStyle.Weight));
                    if (Fonts.SystemFontFamilies.Any(t => t.GetTypefaces().Any(f=>f.FaceNames.Any(fn=>fn.Key.ToString().ToLower() == textStyle.Face.ToLower()))))
                        xamlTextBlock.SetValue(TextBlock.FontFamilyProperty, Fonts.SystemFontFamilies.First(t => t.GetTypefaces().Any(f => f.FaceNames.Any(fn => fn.Key.ToString().ToLower() == textStyle.Face.ToLower()))));
                    xamlTextBlock.SetValue(TextBlock.ForegroundProperty, Core.GetColorBrushFromString(textStyle.Default));
                }
                xamlGrid.AppendChild(xamlTextBlock);
            }
            Template = new ControlTemplate { VisualTree = xamlGrid };
            //- Формирование шаблона контрола
        }
コード例 #9
0
        private void DrawButton(SkinButtonState state)
        {
            var button = (SkinButton)SkinElement;
            var art    = new SkinArtImage();

            switch (state)
            {
            case SkinButtonState.Normal:
                art = button.Art.Images.Any(t => t.Type == "BackgroundImage") ? button.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                break;

            case SkinButtonState.Clicked:
                if (button.Art.Images.Any(t => t.Type == "SelectedImage" && !string.IsNullOrEmpty(t.Type)))
                {
                    art = button.Art.Images.First(t => t.Type == "SelectedImage");
                }
                else
                {
                    art = button.Art.Images.Any(t => t.Type == "ClickedImage" && !string.IsNullOrEmpty(t.Type))
                            ? button.Art.Images.First(t => t.Type == "ClickedImage")
                            : (button.Art.Images.Any(t => t.Type == "BackgroundImage") ? button.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage());
                }
                break;

            case SkinButtonState.Focused:
                art = button.Art.Images.Any(t => t.Type == "HoverImage" && !string.IsNullOrEmpty(t.Type))
                        ? button.Art.Images.First(t => t.Type == "HoverImage")
                        : (button.Art.Images.Any(t => t.Type == "BackgroundImage") ? button.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage());
                break;
            }
            var img = (BitmapImage)Core.GetImageSourceFromFileName(SkinController.GetFullPath(art.Path));

            //+ Формирование шаблона контрола
            var xamlGrid  = new FrameworkElementFactory(typeof(Grid));
            var xamlImage = new FrameworkElementFactory(typeof(Image));

            xamlImage.SetValue(WidthProperty, (double)img.PixelWidth);
            xamlImage.SetValue(HeightProperty, (double)img.PixelHeight);
            xamlImage.SetValue(Image.SourceProperty, img);
            xamlGrid.AppendChild(xamlImage);
            if (!string.IsNullOrEmpty(button.Text))
            {
                var xamlTextBlock = new FrameworkElementFactory(typeof(TextBlock));
                xamlTextBlock.SetValue(TextBlock.TextProperty, string.IsNullOrEmpty(button.Text) ? button.Name : button.Text);
                var hAlign = HorizontalAlignment.Center;
                switch (button.Align)
                {
                case SkinTextAligh.left: hAlign = HorizontalAlignment.Left; break;

                case SkinTextAligh.right: hAlign = HorizontalAlignment.Right; break;
                }
                xamlTextBlock.SetValue(HorizontalAlignmentProperty, hAlign);
                xamlTextBlock.SetValue(VerticalAlignmentProperty, VerticalAlignment.Center);
                if (SkinController.SkinApp.Styles.Any(t => t.Name == button.Style))
                {
                    var textStyle = SkinController.SkinApp.Styles.First(t => t.Name == button.Style);
                    xamlTextBlock.SetValue(TextBlock.FontSizeProperty, textStyle.Height);
                    if (textStyle.Weight > 0)
                    {
                        xamlTextBlock.SetValue(TextBlock.FontWeightProperty, FontWeight.FromOpenTypeWeight((int)textStyle.Weight));
                    }
                    if (Fonts.SystemFontFamilies.Any(t => t.GetTypefaces().Any(f => f.FaceNames.Any(fn => fn.Key.ToString().ToLower() == textStyle.Face.ToLower()))))
                    {
                        xamlTextBlock.SetValue(TextBlock.FontFamilyProperty, Fonts.SystemFontFamilies.First(t => t.GetTypefaces().Any(f => f.FaceNames.Any(fn => fn.Key.ToString().ToLower() == textStyle.Face.ToLower()))));
                    }
                    xamlTextBlock.SetValue(TextBlock.ForegroundProperty, Core.GetColorBrushFromString(textStyle.Default));
                }
                xamlGrid.AppendChild(xamlTextBlock);
            }
            Template = new ControlTemplate {
                VisualTree = xamlGrid
            };
            //- Формирование шаблона контрола
        }
コード例 #10
0
        private void DrawComboBox(SkinButtonState state)
        {
            var comboBox = (SkinComboBox)SkinElement;
            var art      = new SkinArtImage();

            switch (state)
            {
            case SkinButtonState.Normal:
                art = comboBox.Art.Images.Any(t => t.Type == "BackgroundImage") ? comboBox.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage();
                break;

            case SkinButtonState.Clicked:
                if (comboBox.Art.Images.Any(t => t.Type == "SelectedImage" && !string.IsNullOrEmpty(t.Type)))
                {
                    art = comboBox.Art.Images.First(t => t.Type == "SelectedImage");
                }
                else
                {
                    art = comboBox.Art.Images.Any(t => t.Type == "ClickedImage" && !string.IsNullOrEmpty(t.Type))
                            ? comboBox.Art.Images.First(t => t.Type == "ClickedImage")
                            : (comboBox.Art.Images.Any(t => t.Type == "BackgroundImage") ? comboBox.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage());
                }
                break;

            case SkinButtonState.Focused:
                art = comboBox.Art.Images.Any(t => t.Type == "HoverImage" && !string.IsNullOrEmpty(t.Type))
                        ? comboBox.Art.Images.First(t => t.Type == "HoverImage")
                        : (comboBox.Art.Images.Any(t => t.Type == "BackgroundImage") ? comboBox.Art.Images.First(t => t.Type == "BackgroundImage") : new SkinArtImage());
                break;
            }
            var img = (BitmapImage)Core.GetImageSourceFromFileName(SkinController.GetFullPath(art.Path));

            //+ Формирование шаблона контрола
            var xamlGrid   = new FrameworkElementFactory(typeof(Grid));
            var xamlBorder = new FrameworkElementFactory(typeof(Border));
            var xamlImage  = new FrameworkElementFactory(typeof(Image));

            xamlImage.SetValue(WidthProperty, (double)img.PixelWidth);
            xamlImage.SetValue(HeightProperty, (double)img.PixelHeight);
            xamlImage.SetValue(Image.SourceProperty, img);
            xamlGrid.AppendChild(xamlImage);
            if (!string.IsNullOrEmpty(comboBox.Text))
            {
                var xamlTextBlock = new FrameworkElementFactory(typeof(TextBlock));
                xamlTextBlock.SetValue(TextBlock.TextProperty, comboBox.Text);
                xamlTextBlock.SetValue(HorizontalAlignmentProperty, HorizontalAlignment.Center);
                xamlTextBlock.SetValue(VerticalAlignmentProperty, VerticalAlignment.Center);
                if (SkinController.SkinApp.Styles.Any(t => t.Name == comboBox.Style))
                {
                    var textStyle = SkinController.SkinApp.Styles.First(t => t.Name == comboBox.Style);
                    xamlTextBlock.SetValue(TextBlock.FontSizeProperty, textStyle.Height);
                    if (textStyle.Weight > 0)
                    {
                        xamlTextBlock.SetValue(TextBlock.FontWeightProperty, textStyle.Weight);
                    }
                    xamlTextBlock.SetValue(TextBlock.FontFamilyProperty, new FontFamily(textStyle.Face));
                    xamlTextBlock.SetValue(TextBlock.ForegroundProperty, Core.GetColorBrushFromString(textStyle.Default));
                }
                xamlGrid.AppendChild(xamlTextBlock);
            }
            xamlBorder.AppendChild(xamlGrid);
            Template = new ControlTemplate {
                VisualTree = xamlBorder
            };
            //- Формирование шаблона контрола
        }