jak zmienić atrybut is frozen na false

0
private void UnderlineChanged(Object sender, RoutedEventArgs e)
        {
            if (Underline.IsChecked == true)
            {
                Text_Displayed.TextDecorations = TextDecorations.Underline;
            }
            else
            {
                
                Text_Displayed.TextDecorations.Clear();
            }
        }

ten kod wyrzuca wyjątek:

System.InvalidOperationException: „Aby modyfikować określoną wartość typu „System.Windows.TextDecorationCollection”, należy ustawić atrybut IsFrozen na wartość „false”.”

ale z tego co wyczytałem w dokumentacji da się tylko ustawić w jedną stronę z false na true funkcją Freeze()

ktoś ma pomysł jak to obejść?

myślę nad funkcją ClearValue(DependencyProperty) ale nie umiem jej użyć :<

0

drugie pytanie:
mam taki kod, przykładowy z dokumentacji:

private void UnderlineChanged(Object sender, RoutedEventArgs e)
        {
            if (Underline.IsChecked == true)
            {
                Text_Displayed.TextDecorations = myUnderline ;
            }
            else
            {
                Text_Displayed.TextDecorations = TextDecorations.OverLine;
                //Text_Displayed.TextDecorations.Clear();
            }
        }

        private void SetLinearGradientUnderline()
        {
            // Create an underline text decoration. Default is underline.
            myUnderline = new TextDecoration();
             
            // Create a linear gradient pen for the text decoration.
            Pen myPen = new Pen();
            myPen.Brush = new LinearGradientBrush(Colors.Yellow, Colors.Red, new Point(0, 0.5), new Point(1, 0.5));
            myPen.Brush.Opacity = 0.5;
            myPen.Thickness = 1.5;
            myPen.DashStyle = DashStyles.Dash;
            myUnderline.Pen = myPen;
            myUnderline.PenThicknessUnit = TextDecorationUnit.FontRecommended;

            // Set the underline decoration to a TextDecorationCollection and add it to the text block.
            TextDecorationCollection myCollection = new TextDecorationCollection();
            myCollection.Add(myUnderline);
            
            Text_Displayed.TextDecorations = myCollection;
        }

jak zrobić żeby przy zmianie atrybutu z overline na underline i z powrotem zachować te fajne kolorowe podkreślenie?
Jestem kompletnie nowy w WPFie

0

nie pomogło :<

0

znalazłem :D

Text_Displayed.TextDecorations = null;

1 użytkowników online, w tym zalogowanych: 0, gości: 1