using System; using System.Collections.Generic; using System.Collections.ObjectModel; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; namespace Sai.Common.Shared.WBSCoder { public partial class ProjectCodeAddedCheckerViewModel : ObservableObject { public ProjectCodeAddedCheckerViewModel(CheckCodeViewModel viewModel) { allElements = viewModel.AllElements; LastTaskItems = viewModel.LastTaskItems; handler = new CodingEventHandler(); codingEvent = ExternalEvent.Create(handler); } private readonly IList allElements; private readonly ExternalEvent codingEvent; private readonly CodingEventHandler handler; public ObservableCollection LastTaskItems { get; set; } /// /// 添加WBS编码 /// /// [RelayCommand] private void AddWbsCode(object obj) { try { handler.TaskItem = obj as TaskItem; codingEvent.Raise(); } catch (Exception ex) { TaskDialog.Show("添加失败", $"{ex.Message}"); } } /// /// 检查mpp文件是否都赋予到模型 /// [RelayCommand] private void CheckCode() { foreach (var ele in allElements) { var temp = ele.get_Parameter(BuiltInParameter.ALL_MODEL_MARK)?.AsString(); if (temp == null) { continue; } string code = WbsCoderUtils.FormatWbsCode(temp); foreach (var task in LastTaskItems) { if (task.WBSCode == code) { task.HasCoded = true; break; } } } TaskDialog.Show("提示", "校验完成"); } } }