Files
WCS/Cowain.Base/Extensions/GlobalDataExtensions.cs
2026-03-02 09:08:20 +08:00

48 lines
1.2 KiB
C#

using Avalonia.Data;
using Avalonia.Data.Converters;
using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.MarkupExtensions;
using Cowain.Base.Helpers;
using System.Reflection;
namespace Cowain.Base.Extensions;
public class GlobalDataExtensions : MarkupExtension
{
private string _key;
private string? _path;
public GlobalDataExtensions(string key)
{
_key = key;
}
public GlobalDataExtensions(string key, string path) : this(key)
{
_path = path;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (string.IsNullOrEmpty(_path))
{
var binding = new ReflectionBindingExtension("[" + _key + "]")
{
Mode = BindingMode.OneWay,
Source = GlobalData.Instance
};
return binding.ProvideValue(serviceProvider);
}
else
{
//绑定复杂的对象表达式
var bindingPath = $"[{_key}].{_path}";
var binding = new ReflectionBindingExtension(bindingPath)
{
Mode = BindingMode.OneWay,
Source = GlobalData.Instance
};
return binding.ProvideValue(serviceProvider);
}
}
}