34 lines
1000 B
C#
34 lines
1000 B
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(LocaleKeys key) : MarkupExtension
|
|
{
|
|
public LocaleKeys Key { get; } = key;
|
|
|
|
public override object ProvideValue(IServiceProvider serviceProvider)
|
|
{
|
|
var builder = new CompiledBindingPathBuilder();
|
|
|
|
builder.Property(
|
|
new ClrPropertyInfo("Item",
|
|
_ => LocaleManager.Instance[Key],
|
|
null,
|
|
typeof(string)
|
|
),
|
|
PropertyInfoAccessorFactory.CreateInpcPropertyAccessor);
|
|
|
|
var binding = new CompiledBindingExtension(builder.Build())
|
|
{
|
|
Source = LocaleManager.Instance
|
|
};
|
|
|
|
return binding.ProvideValue(serviceProvider);
|
|
}
|
|
}
|
|
}
|