Как сохранить эффект тени на этикетке

#c# #wpf

Вопрос:

Я создаю знаменитую игру в слова, Жаргон. И чтобы читать его лучше, я добавил эффект тени. При создании эффекта добавляется тень. Он виден в начале, но исчезает после того, как содержимое было изменено на буквы

     public DropShadowEffect drop = new DropShadowEffect
    {
        Color = new Color { A = 0, R = 0, G = 0, B = 0 },
        Direction = 315,
        ShadowDepth = 5,
        Opacity = 1,
        BlurRadius = 5
    };

    public void DrawTextblocks(WrapPanel Word_canvas)
        {
            for (int j = 0; j < 10; j  )
            {
                for (int i = 0; i < letter_lenth; i  )
                {
                    Border Background = new Border
                    {
                        Background = Brushes.DarkBlue,
                        Width = size,
                        Height = 118,
                        Margin = new Thickness(0),
                        BorderBrush = Brushes.DarkGray,
                        BorderThickness = new Thickness(1, 1, 1, 1),
                    };

                    Label Label = new Label
                    {
                        Height = 118,
                        Width = size,
                        FontSize = font_size_letter,
                        Effect = drop,
                        Background = Brushes.Transparent,
                        HorizontalContentAlignment = HorizontalAlignment.Center,
                        VerticalContentAlignment = VerticalAlignment.Center,
                        Foreground = Brushes.White,
                        Content = ".",
                        Margin = new Thickness(0),
                    };

                    Letter_backgrounds[j, i] = Background;
                    Background.Child = Label;
                    Word_canvas.Children.Add(Background);
                    Canvas.SetLeft(Label, i * 118);
                    Canvas.SetTop(Label, j * 118);
                    Letter_labels[j, i] = Label;
                }
            }
        } 
 

Самое странное, что я создаю таким же образом числа, но там эффект тени НЕ исчезает. Даже после того, как я сделаю передний план прозрачным, а заднюю часть белой после Жаргона. (смотрите gif для лучшей идеи)

 public void DrawBalls_F(UniformGrid Ball_canvas_F)
        {
            for (int j = 0; j < 5; j  )
            {
                for (int i = 0; i < 5; i  )
                {
                        lost_numbers_f = lost_numbers_pattern_F1;
                        Border Ball_border = new Border
                        {
                            BorderThickness = new Thickness(5),
                            BorderBrush = new SolidColorBrush(Colors.Transparent),
                            Background = new SolidColorBrush(Colors.DarkBlue),
                            CornerRadius = new CornerRadius(100),
                            Width = 118,
                            Height = 118
                        };

                        Label Ball_label = new Label
                        {
                            Width = 118,
                            Height = 118,
                            Effect = drop,
                            Content = board_f2[j, i],
                            HorizontalContentAlignment = HorizontalAlignment.Center,
                            VerticalContentAlignment = VerticalAlignment.Center,
                            FontSize = font_size_ball,
                            Foreground = new SolidColorBrush(Colors.White),
                            Background = new SolidColorBrush(Colors.Transparent),
                        };

                        Ball_canvas_F.Children.Add(Ball_border);
                        Canvas.SetLeft(Ball_label, i * size);
                        Canvas.SetTop(Ball_label, j * size);
                        Ball_F_L[j, i] = Ball_label;
                        Ball_F_B[j, i] = Ball_border;
                    }
                }
            }
        }
 

В чем причина того, что тень остается на цифрах, но не на буквах?

Чтобы посмотреть, что произойдет

Комментарии:

1. Совет: Не знаю ответа, потому что я знаю, как применять стили только в XAML. Но я предлагаю использовать TextBlock вместо Label , потому Label что он не предназначен для отображения текста в WPF, он немного медленнее по производительности, чем TextBlock . Используйте XAML и стили, это проще, чем бороться с элементами управления в C#.

2. @aepot хорошо, это имеет смысл. Переключил его на «Текстовый блок» и должен был изменить содержимое на тексты. Но все равно эффект исчезает.

3. Похоже, что он работает до изменения текста imgur.com/a/e9eXwrc