@@ -28,7 +28,7 @@ internal Localizer(Options options)
2828 this . localizationActions = LocalizationActions . DefaultActions ;
2929 }
3030
31- Uids . DependencyObjectUidSet += Uids_DependencyObjectUidSet ; ;
31+ Uids . DependencyObjectUidSet += Uids_DependencyObjectUidSet ;
3232 }
3333
3434 public event EventHandler < LanguageChangedEventArgs > ? LanguageChanged ;
@@ -257,14 +257,6 @@ private static void DependencyObjectsReferences_DependencyObjectRemoved(object?
257257 return null ;
258258 }
259259
260- private void LocalizeDependencyObjectsWithoutDependencyProperty ( DependencyObject dependencyObject , string value )
261- {
262- foreach ( LocalizationActions . ActionItem item in this . localizationActions
263- . Where ( x => x . TargetType == dependencyObject . GetType ( ) ) )
264- {
265- item . Action ( new LocalizationActions . ActionArguments ( dependencyObject , value ) ) ;
266- }
267- }
268260 private async Task LocalizeDependencyObjects ( )
269261 {
270262 foreach ( DependencyObject dependencyObject in await this . dependencyObjectsReferences . GetDependencyObjects ( ) )
@@ -280,20 +272,49 @@ private void LocalizeDependencyObject(DependencyObject dependencyObject)
280272 {
281273 foreach ( LanguageDictionary . Item item in items )
282274 {
283- if ( GetDependencyProperty (
284- dependencyObject ,
285- item . DependencyPropertyName ) is DependencyProperty dependencyProperty )
286- {
287- dependencyObject . SetValue ( dependencyProperty , item . Value ) ;
288- }
289- else
290- {
291- LocalizeDependencyObjectsWithoutDependencyProperty ( dependencyObject , item . Value ) ;
292- }
275+ LocalizeDependencyObject ( dependencyObject , item ) ;
293276 }
294277 }
295278 }
296279
280+ private void LocalizeDependencyObject ( DependencyObject dependencyObject , LanguageDictionary . Item item )
281+ {
282+ if ( GetDependencyProperty (
283+ dependencyObject ,
284+ item . DependencyPropertyName ) is DependencyProperty dependencyProperty )
285+ {
286+ LocalizeDependencyObjectsWithDependencyProperty ( dependencyObject , dependencyProperty , item . Value ) ;
287+ }
288+ else
289+ {
290+ LocalizeDependencyObjectsWithoutDependencyProperty ( dependencyObject , item . Value ) ;
291+ }
292+ }
293+
294+ private void LocalizeDependencyObjectsWithDependencyProperty ( DependencyObject dependencyObject , DependencyProperty dependencyProperty , string value )
295+ {
296+ if ( dependencyObject
297+ . GetValue ( dependencyProperty ) ?
298+ . GetType ( ) is Type propertyType &&
299+ propertyType . IsEnum is true &&
300+ Enum . TryParse ( propertyType , value , out object ? enumValue ) is true )
301+ {
302+ dependencyObject . SetValue ( dependencyProperty , enumValue ) ;
303+ return ;
304+ }
305+
306+ dependencyObject . SetValue ( dependencyProperty , value ) ;
307+ }
308+
309+ private void LocalizeDependencyObjectsWithoutDependencyProperty ( DependencyObject dependencyObject , string value )
310+ {
311+ foreach ( LocalizationActions . ActionItem item in this . localizationActions
312+ . Where ( x => x . TargetType == dependencyObject . GetType ( ) ) )
313+ {
314+ item . Action ( new LocalizationActions . ActionArguments ( dependencyObject , value ) ) ;
315+ }
316+ }
317+
297318 private void OnLanguageChanged ( string previousLanguage , string currentLanguage )
298319 {
299320 LanguageChanged ? . Invoke ( this , new LanguageChangedEventArgs ( previousLanguage , currentLanguage ) ) ;
0 commit comments