mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-05-10 01:57:43 +02:00
40 lines
1.1 KiB
C#
40 lines
1.1 KiB
C#
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
|
|
{
|
|
internal class LocaleExtension : MarkupExtension
|
|
{
|
|
public LocaleExtension(LocaleKeys key)
|
|
{
|
|
Key = key;
|
|
}
|
|
|
|
public LocaleKeys Key { get; }
|
|
|
|
public override object ProvideValue(IServiceProvider serviceProvider)
|
|
{
|
|
LocaleKeys keyToUse = Key;
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|