@@ -28,7 +28,7 @@ internal Localizer(Options options)
28
28
this . localizationActions = LocalizationActions . DefaultActions ;
29
29
}
30
30
31
- Uids . DependencyObjectUidSet += Uids_DependencyObjectUidSet ; ;
31
+ Uids . DependencyObjectUidSet += Uids_DependencyObjectUidSet ;
32
32
}
33
33
34
34
public event EventHandler < LanguageChangedEventArgs > ? LanguageChanged ;
@@ -257,14 +257,6 @@ private static void DependencyObjectsReferences_DependencyObjectRemoved(object?
257
257
return null ;
258
258
}
259
259
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
- }
268
260
private async Task LocalizeDependencyObjects ( )
269
261
{
270
262
foreach ( DependencyObject dependencyObject in await this . dependencyObjectsReferences . GetDependencyObjects ( ) )
@@ -280,20 +272,49 @@ private void LocalizeDependencyObject(DependencyObject dependencyObject)
280
272
{
281
273
foreach ( LanguageDictionary . Item item in items )
282
274
{
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 ) ;
293
276
}
294
277
}
295
278
}
296
279
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
+
297
318
private void OnLanguageChanged ( string previousLanguage , string currentLanguage )
298
319
{
299
320
LanguageChanged ? . Invoke ( this , new LanguageChangedEventArgs ( previousLanguage , currentLanguage ) ) ;
0 commit comments