atomui/samples/AtomUI.Demo.Desktop/ViewModels/CheckBoxShowCaseModel.cs
2024-09-10 12:46:41 +08:00

193 lines
4.8 KiB
C#

using CommunityToolkit.Mvvm.ComponentModel;
namespace AtomUI.Demo.Desktop.ViewModels;
public class CheckBoxShowCaseModel : ObservableObject
{
public bool? _controlledCheckBoxCheckedStatus;
public bool? ControlledCheckBoxCheckedStatus
{
get => _controlledCheckBoxCheckedStatus;
set => SetProperty(ref _controlledCheckBoxCheckedStatus, value);
}
public bool _controlledCheckBoxEnabledStatus;
public bool ControlledCheckBoxEnabledStatus
{
get => _controlledCheckBoxEnabledStatus;
set => SetProperty(ref _controlledCheckBoxEnabledStatus, value);
}
private string? _checkStatusBtnText;
public string? CheckStatusBtnText
{
get => _checkStatusBtnText;
set => SetProperty(ref _checkStatusBtnText, value);
}
private string? _enableStatusBtnText;
public string? EnableStatusBtnText
{
get => _enableStatusBtnText;
set => SetProperty(ref _enableStatusBtnText, value);
}
private string? _controlledCheckBoxText;
public string? ControlledCheckBoxText
{
get => _controlledCheckBoxText;
set => SetProperty(ref _controlledCheckBoxText, value);
}
// CheckAll 例子
private bool? _checkedAllStatus;
public bool? CheckedAllStatus
{
get => _checkedAllStatus;
set => SetProperty(ref _checkedAllStatus, value);
}
private bool _appleCheckedStatus;
public bool AppleCheckedStatus
{
get => _appleCheckedStatus;
set => SetProperty(ref _appleCheckedStatus, value);
}
private bool _pearCheckedStatus;
public bool PearCheckedStatus
{
get => _pearCheckedStatus;
set => SetProperty(ref _pearCheckedStatus, value);
}
private bool _orangeCheckedStatus;
public bool OrangeCheckedStatus
{
get => _orangeCheckedStatus;
set => SetProperty(ref _orangeCheckedStatus, value);
}
public CheckBoxShowCaseModel()
{
CheckStatusBtnText = "UnCheck";
EnableStatusBtnText = "Disable";
ControlledCheckBoxCheckedStatus = true;
ControlledCheckBoxEnabledStatus = true;
SetupControlledCheckBoxText();
AppleCheckedStatus = false;
PearCheckedStatus = true;
OrangeCheckedStatus = true;
CheckedAllStatus = null;
}
public void CheckStatusHandler(object arg)
{
ControlledCheckBoxCheckedStatus = !ControlledCheckBoxCheckedStatus;
SetupCheckBtnText();
SetupControlledCheckBoxText();
}
public void EnableStatusHandler(object arg)
{
ControlledCheckBoxEnabledStatus = !ControlledCheckBoxEnabledStatus;
SetupEnabledBtnText();
SetupControlledCheckBoxText();
}
public void CheckBoxHandler(object arg)
{
SetupCheckBtnText();
SetupControlledCheckBoxText();
}
private void SetupCheckBtnText()
{
if (ControlledCheckBoxCheckedStatus.HasValue)
{
if (ControlledCheckBoxCheckedStatus.Value)
{
CheckStatusBtnText = "UnCheck";
}
else
{
CheckStatusBtnText = "Check";
}
}
else
{
CheckStatusBtnText = "Check";
}
}
private void SetupEnabledBtnText()
{
if (ControlledCheckBoxEnabledStatus)
{
EnableStatusBtnText = "Disable";
}
else
{
EnableStatusBtnText = "Enable";
}
}
private void SetupControlledCheckBoxText()
{
var checkedText = "UnChecked";
if (ControlledCheckBoxCheckedStatus.HasValue && ControlledCheckBoxCheckedStatus.Value)
{
checkedText = "Checked";
}
var enabledText = "Disabled";
if (ControlledCheckBoxEnabledStatus)
{
enabledText = "Enabled";
}
ControlledCheckBoxText = $"{checkedText}-{enabledText}";
}
public void CheckedAllStatusHandler()
{
if (!CheckedAllStatus.HasValue || !CheckedAllStatus.Value)
{
AppleCheckedStatus = false;
PearCheckedStatus = false;
OrangeCheckedStatus = false;
}
else
{
AppleCheckedStatus = true;
PearCheckedStatus = true;
OrangeCheckedStatus = true;
}
}
public void CheckedItemStatusHandler(object arg)
{
if (OrangeCheckedStatus && PearCheckedStatus && AppleCheckedStatus)
{
CheckedAllStatus = true;
}
else if (!OrangeCheckedStatus && !PearCheckedStatus && !AppleCheckedStatus)
{
CheckedAllStatus = false;
}
else
{
CheckedAllStatus = null;
}
}
}