45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
using System;
|
|
|
|
namespace XericUI.ReflectionUIGenerator
|
|
{
|
|
/// <summary>
|
|
/// 为 ToggleGroup UI 提供预设选项
|
|
///
|
|
/// 使用示例:
|
|
/// [XuiavrgFieldToggleGroupValue("低", "中", "高", MergeMode = PresetOptionsMergeMode.Replace)]
|
|
/// public string detailLevel = "中";
|
|
///
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
|
|
public class XuiavrgFieldToggleGroupValueAttribute : Attribute, IXuiavrgAttribute
|
|
{
|
|
/// <summary>预设选项数组</summary>
|
|
public readonly string[] Options;
|
|
|
|
/// <summary>与已有选项(如 enum 名)的合并模式</summary>
|
|
public PresetOptionsMergeMode MergeMode { get; set; } = PresetOptionsMergeMode.Replace;
|
|
|
|
public XuiavrgFieldToggleGroupValueAttribute(params string[] options)
|
|
{
|
|
Options = options ?? Array.Empty<string>();
|
|
}
|
|
public XuiavrgFieldToggleGroupValueAttribute(PresetOptionsMergeMode mergeMode, params string[] options)
|
|
{
|
|
MergeMode = mergeMode;
|
|
Options = options ?? Array.Empty<string>();
|
|
}
|
|
|
|
public void BindMetaData(AvrgMemberMetaData metaData)
|
|
{
|
|
if (metaData == null) return;
|
|
|
|
metaData.PresetOptions = Options;
|
|
metaData.OptionsMergeMode = MergeMode;
|
|
|
|
// 自动设置 Tag 为 ToggleGroup
|
|
if (metaData.Tag == XuiavrgFieldTag.None)
|
|
metaData.Tag = XuiavrgFieldTag.ToggleGroup;
|
|
}
|
|
}
|
|
}
|