csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.1 KiB
51 lines
1.1 KiB
using Avalonia.Controls;
|
|
|
|
namespace Avalonia.Diagnostics.ViewModels
|
|
{
|
|
internal class PseudoClassViewModel : ViewModelBase
|
|
{
|
|
private readonly IPseudoClasses _pseudoClasses;
|
|
private readonly StyledElement _source;
|
|
private bool _isActive;
|
|
private bool _isUpdating;
|
|
|
|
public PseudoClassViewModel(string name, StyledElement source)
|
|
{
|
|
Name = name;
|
|
_source = source;
|
|
_pseudoClasses = _source.Classes;
|
|
|
|
Update();
|
|
}
|
|
|
|
public string Name { get; }
|
|
|
|
public bool IsActive
|
|
{
|
|
get => _isActive;
|
|
set
|
|
{
|
|
RaiseAndSetIfChanged(ref _isActive, value);
|
|
|
|
if (!_isUpdating)
|
|
{
|
|
_pseudoClasses.Set(Name, value);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Update()
|
|
{
|
|
try
|
|
{
|
|
_isUpdating = true;
|
|
|
|
IsActive = _source.Classes.Contains(Name);
|
|
}
|
|
finally
|
|
{
|
|
_isUpdating = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|