feat: add resources.
This commit is contained in:
59
src/Ursa/Controls/Loading/LoadingContainer.cs
Normal file
59
src/Ursa/Controls/Loading/LoadingContainer.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Metadata;
|
||||
using Avalonia.Controls.Templates;
|
||||
|
||||
namespace Ursa.Controls;
|
||||
|
||||
[PseudoClasses(PC_Loading)]
|
||||
public class LoadingContainer: ContentControl
|
||||
{
|
||||
public const string PC_Loading = ":loading";
|
||||
|
||||
public static readonly StyledProperty<object?> IndicatorProperty = AvaloniaProperty.Register<LoadingContainer, object?>(
|
||||
nameof(Indicator));
|
||||
|
||||
public object? Indicator
|
||||
{
|
||||
get => GetValue(IndicatorProperty);
|
||||
set => SetValue(IndicatorProperty, value);
|
||||
}
|
||||
|
||||
public static readonly StyledProperty<object?> LoadingMessageProperty = AvaloniaProperty.Register<LoadingContainer, object?>(
|
||||
nameof(LoadingMessage));
|
||||
|
||||
public object? LoadingMessage
|
||||
{
|
||||
get => GetValue(LoadingMessageProperty);
|
||||
set => SetValue(LoadingMessageProperty, value);
|
||||
}
|
||||
|
||||
public static readonly StyledProperty<IDataTemplate> LoadingMessageTemplateProperty = AvaloniaProperty.Register<LoadingContainer, IDataTemplate>(
|
||||
nameof(LoadingMessageTemplate));
|
||||
|
||||
public IDataTemplate LoadingMessageTemplate
|
||||
{
|
||||
get => GetValue(LoadingMessageTemplateProperty);
|
||||
set => SetValue(LoadingMessageTemplateProperty, value);
|
||||
}
|
||||
|
||||
public static readonly StyledProperty<bool> IsLoadingProperty = AvaloniaProperty.Register<LoadingContainer, bool>(
|
||||
nameof(IsLoading));
|
||||
|
||||
public bool IsLoading
|
||||
{
|
||||
get => GetValue(IsLoadingProperty);
|
||||
set => SetValue(IsLoadingProperty, value);
|
||||
}
|
||||
|
||||
static LoadingContainer()
|
||||
{
|
||||
IsLoadingProperty.Changed.AddClassHandler<LoadingContainer>((x, e) => x.OnIsLoadingChanged(e));
|
||||
}
|
||||
|
||||
private void OnIsLoadingChanged(AvaloniaPropertyChangedEventArgs args)
|
||||
{
|
||||
bool newValue = args.GetNewValue<bool>();
|
||||
PseudoClasses.Set(PC_Loading, newValue);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user