diff options
author | Emmanuel Hansen <emmausssss@gmail.com> | 2023-09-18 20:20:59 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-18 22:20:59 +0200 |
commit | d6bc0de7857dd5290687be4777ca6bf163d693d9 (patch) | |
tree | 8f5a071b9c3d637b3f0b2a3d8766103c0d833c2a /src | |
parent | 9f26fd36008d2cf4fe96b8dce7ec935b38b0b4c7 (diff) |
use compiled bidning for localizations (#5684)1.1.1017
Diffstat (limited to 'src')
-rw-r--r-- | src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs b/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs index cd1c1510..8d345ae0 100644 --- a/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs +++ b/src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs @@ -1,6 +1,7 @@ -using Avalonia.Data; +using Avalonia.Data.Core; using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml.MarkupExtensions; +using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings; using System; namespace Ryujinx.Ava.Common.Locale @@ -18,11 +19,20 @@ namespace Ryujinx.Ava.Common.Locale { LocaleKeys keyToUse = Key; - ReflectionBindingExtension binding = new($"[{keyToUse}]") - { - Mode = BindingMode.OneWay, - Source = LocaleManager.Instance, - }; + var builder = new CompiledBindingPathBuilder(); + + builder.SetRawSource(LocaleManager.Instance) + .Property(new ClrPropertyInfo("Item", + obj => (LocaleManager.Instance[keyToUse]), + null, + typeof(string)), (weakRef, iPropInfo) => + { + return PropertyInfoAccessorFactory.CreateInpcPropertyAccessor(weakRef, iPropInfo); + }); + + var path = builder.Build(); + + var binding = new CompiledBindingExtension(path); return binding.ProvideValue(serviceProvider); } |