feat(触发器): 添加触发器编辑功能

- 在触发器页面添加“编辑选中项”按钮
- 扩展添加触发器对话框以支持编辑模式
- 实现触发器数据的回显和更新逻辑
- 通过绑定动态更新对话框标题
This commit is contained in:
辉鸭蛋
2026-02-17 21:55:42 +08:00
parent adad7ec087
commit f59043d708
5 changed files with 109 additions and 7 deletions

View File

@@ -21,6 +21,9 @@ public partial class AddTriggerDialogViewModel : ObservableObject
private readonly GearTaskStorageService _storageService;
private readonly ILogger<AddTriggerDialogViewModel> _logger;
[ObservableProperty]
private string _dialogTitle = "新增触发器";
[ObservableProperty]
private string _triggerName = string.Empty;
@@ -112,6 +115,34 @@ public partial class AddTriggerDialogViewModel : ObservableObject
LoadAvailableTaskDefinitions();
}
public AddTriggerDialogViewModel(GearTaskStorageService storageService, ILogger<AddTriggerDialogViewModel> logger, GearTriggerViewModel existingTrigger)
{
_storageService = storageService;
_logger = logger;
DialogTitle = "编辑触发器";
IsTriggerTypeSelectionEnabled = false;
SelectedTriggerType = existingTrigger.TriggerType;
TriggerName = existingTrigger.Name;
IsEnabled = existingTrigger.IsEnabled;
SelectedTaskDefinitionName = existingTrigger.TaskDefinitionName;
CronExpression = existingTrigger.TriggerType == TriggerType.Timed
? (existingTrigger.CronExpression ?? CronExpression)
: CronExpression;
SelectedHotkey = existingTrigger.TriggerType == TriggerType.Hotkey
? existingTrigger.Hotkey
: null;
HotkeyType = existingTrigger.TriggerType == TriggerType.Hotkey
? existingTrigger.HotkeyType
: HotKeyTypeEnum.KeyboardMonitor;
LoadAvailableTaskDefinitions();
}
/// <summary>
/// 生成默认触发器名称
/// </summary>
@@ -145,7 +176,7 @@ public partial class AddTriggerDialogViewModel : ObservableObject
_logger.LogInformation("已加载 {Count} 个可用的任务定义", AvailableTaskDefinitions.Count);
// 如果有任务定义,默认选择第一个
if (AvailableTaskDefinitions.Count > 0)
if (AvailableTaskDefinitions.Count > 0 && string.IsNullOrWhiteSpace(SelectedTaskDefinitionName))
{
SelectedTaskDefinitionName = AvailableTaskDefinitions[0];
}
@@ -244,4 +275,4 @@ public partial class AddTriggerDialogViewModel : ObservableObject
// 移除旧的示例代码现在使用HotKeyTextBox直接设置
// HotKeyTextBox会直接绑定到SelectedHotkey属性
}
}
}