Kapitel 4: NumberFlicker Bugfix

Während es in der finalen Version des Buches noch funktionierte, scheint nun der NumberFlicker aus Kapitel 4 nicht mehr zu funktionieren. Man bekommt die Zahl des benutzerdefinierten Steuerelements in der Ausführung nicht dargestellt.

Zeit also diesen Bug zu fixen.

Zuerst wurde die Variable in der NumberFlicker.xaml.cs-Datei in eine DependencyProperty geändert, damit die Datenbindung sauber funktioniert.

Der geänderte Quellcode sieht nun, wie folgt aus:

 1:         public static readonly DependencyProperty NumberValueProperty =
 2:               DependencyProperty.Register("NumberValue", typeof(int), typeof(FrameworkElement), new PropertyMetadata(0));  3:  
 4:         public int NumberValue
 5:         {
 6:             get
 7:             {
 8:                 return (int) GetValue(NumberValueProperty);  9:             }
 10:             set
 11:             {
 12:                 if (value == 10)
 13:                 {
 14:                     value = 0;
 15:                 }
 16:                 if (value == -1)
 17:                 {
 18:                     value = 9;
 19:                 }
 20:                 SetValue(NumberValueProperty, value);  21:                 NotifyPropertyChanged("NumberValue");
 22:             }
 23:         }

 

Zusätzlich war eine Änderung am XAML Markup notwendig, in welcher die Bindungsdeklaration angepasst, wie auch die Vordergrundfarbe des TextBlock-Elements deklariert wurde.

Die geänderte Zeile sieht nun, wie folgt aus:

<TextBlock x:Name="numberTextBlock" TextWrapping="Wrap"
Text="{Binding NumberValue}" 
FontSize="64" FontFamily="Segoe WP" Margin="-30,-39,-30,-30" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"
Foreground="Black"
 />

Zwar ist damit immer noch nicht die Anzeige im Designer des Visual Studio möglich, jedoch ist das Steuerelement wieder benutzbar.

Die aktualisierte Variante gibt es hier als Download:

NumberFlickerSample

 

Kommentar verfassen