aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEmmanuel Hansen <emmausssss@gmail.com>2023-09-18 20:20:59 +0000
committerGitHub <noreply@github.com>2023-09-18 22:20:59 +0200
commitd6bc0de7857dd5290687be4777ca6bf163d693d9 (patch)
tree8f5a071b9c3d637b3f0b2a3d8766103c0d833c2a /src
parent9f26fd36008d2cf4fe96b8dce7ec935b38b0b4c7 (diff)
use compiled bidning for localizations (#5684)1.1.1017
Diffstat (limited to 'src')
-rw-r--r--src/Ryujinx.Ava/Common/Locale/LocaleExtension.cs22
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);
}