Files
ShrlAlgoToolkit/NeuWPF/NeoUI/Assists/ButtonAssist.cs

119 lines
5.2 KiB
C#
Raw Normal View History

2025-08-20 12:10:35 +08:00
using NeoUI.Assets;
using NeoUI.Controls;
2025-08-20 12:10:13 +08:00
2025-08-20 12:10:35 +08:00
namespace NeoUI.Assists;
2025-08-20 12:10:13 +08:00
/// <summary>
/// ButtonAssist 类提供了对按钮控件外观类型的辅助功能。
/// 通过此辅助类可以方便地获取或设置按钮的AppearanceType属性
/// 从而控制按钮的视觉样式。支持的样式包括Primary、Info、Success、Warning和Error。
/// </summary>
public class ButtonAssist
{
/// <summary>
/// 获取指定对象的外观类型。
/// </summary>
/// <param name="obj">要获取其外观类型的依赖对象。</param>
/// <returns>返回指定对象的AppearanceType枚举值表示其外观类型。</returns>
public static AppearanceType GetAppearanceType(DependencyObject obj)
{
return (AppearanceType)obj.GetValue(AppearanceTypeProperty);
}
/// <summary>
/// 设置指定对象的外观类型。
/// </summary>
/// <param name="obj">要设置其外观类型的依赖对象。</param>
/// <param name="value">AppearanceType枚举值表示要设置的外观类型。</param>
public static void SetAppearanceType(DependencyObject obj, AppearanceType value)
{
obj.SetValue(AppearanceTypeProperty, value);
}
/// <summary>
/// 代表按钮控件的外观类型依赖属性。通过此属性,可以设置或获取按钮的视觉样式。
/// 支持的样式包括Primary、Info、Success、Warning和Error分别对应不同的视觉效果。
/// </summary>
public static readonly DependencyProperty AppearanceTypeProperty =
DependencyProperty.RegisterAttached("AppearanceType", typeof(AppearanceType), typeof(ButtonAssist), new PropertyMetadata(AppearanceType.None));
2025-08-20 12:10:35 +08:00
/// <summary>
/// 获取指定对象的图标。
/// </summary>
/// <param name="obj">要获取其图标的依赖对象。</param>
/// <returns>返回指定对象的MaterialSymbol枚举值表示其图标。</returns>
2025-08-20 12:10:13 +08:00
public static MaterialSymbol GetIcon(DependencyObject obj)
{
return (MaterialSymbol)obj.GetValue(IconProperty);
}
2025-08-20 12:10:35 +08:00
/// <summary>
/// 为指定对象设置图标。
/// </summary>
/// <param name="obj">要为其设置图标的依赖对象。</param>
/// <param name="value">要设置的MaterialSymbol图标值。</param>
2025-08-20 12:10:13 +08:00
public static void SetIcon(DependencyObject obj, MaterialSymbol value)
{
obj.SetValue(IconProperty, value);
}
2025-08-20 12:10:35 +08:00
/// <summary>
/// 代表按钮控件的图标依赖属性。通过此属性,可以设置或获取按钮上显示的图标。
/// 支持使用MaterialSymbol枚举中的值来指定具体的图标样式。
/// </summary>
2025-08-20 12:10:13 +08:00
public static readonly DependencyProperty IconProperty =
DependencyProperty.RegisterAttached("Icon", typeof(MaterialSymbol), typeof(ButtonAssist), new PropertyMetadata(MaterialSymbol.Cr));
2025-08-20 12:10:35 +08:00
/// <summary>
/// 获取指定对象的图标放置位置。
/// </summary>
/// <param name="obj">要获取其图标放置位置的依赖对象。</param>
/// <returns>返回指定对象的Dock枚举值表示图标的放置位置。</returns>
2025-08-20 12:10:13 +08:00
public static Dock GetIconPlacement(DependencyObject obj)
{
return (Dock)obj.GetValue(IconPlacementProperty);
}
2025-08-20 12:10:35 +08:00
/// <summary>
/// 设置指定对象的图标放置位置。
/// </summary>
/// <param name="obj">要设置其图标放置位置的依赖对象。</param>
/// <param name="value">图标放置位置的值使用Dock枚举表示。</param>
2025-08-20 12:10:13 +08:00
public static void SetIconPlacement(DependencyObject obj, Dock value)
{
obj.SetValue(IconPlacementProperty, value);
}
2025-08-20 12:10:35 +08:00
/// <summary>
/// 代表按钮控件的图标位置依赖属性。通过此属性,可以设置或获取按钮上图标的放置位置。
/// 支持使用Dock枚举中的值来指定图标相对于按钮文本的位置例如左对齐、右对齐等。
/// </summary>
2025-08-20 12:10:13 +08:00
public static readonly DependencyProperty IconPlacementProperty =
DependencyProperty.RegisterAttached("IconPlacement", typeof(Dock), typeof(ButtonAssist), new PropertyMetadata(Dock.Left));
2025-08-20 12:10:35 +08:00
/// <summary>
/// 代表按钮控件是否正在运行的依赖属性。通过此属性,可以设置或获取按钮的运行状态。
/// 此属性通常用于指示按钮关联的操作是否正在进行中,例如数据加载或处理过程。
/// </summary>
2025-08-20 12:10:13 +08:00
public static readonly DependencyProperty IsRunningProperty =
DependencyProperty.RegisterAttached("IsRunning", typeof(bool), typeof(ButtonAssist), new PropertyMetadata(false));
2025-08-20 12:10:35 +08:00
/// <summary>
/// 获取指定对象的IsRunning状态。
/// </summary>
/// <param name="obj">要获取其IsRunning状态的依赖对象。</param>
/// <returns>返回一个布尔值,表示指定对象是否正在运行。</returns>
2025-08-20 12:10:13 +08:00
public static bool GetIsRunning(DependencyObject obj) => (bool)obj.GetValue(IsRunningProperty);
2025-08-20 12:10:35 +08:00
/// <summary>
/// 设置指定对象的运行状态。
/// </summary>
/// <param name="obj">要设置其运行状态的依赖对象。</param>
/// <param name="value">布尔值,表示对象是否处于运行状态。</param>
2025-08-20 12:10:13 +08:00
public static void SetIsRunning(DependencyObject obj, bool value) => obj.SetValue(IsRunningProperty, value);
}