diff --git a/src/UI/WPF/LogisticsControlPanel.xaml b/src/UI/WPF/LogisticsControlPanel.xaml
index c5078e6..0351541 100644
--- a/src/UI/WPF/LogisticsControlPanel.xaml
+++ b/src/UI/WPF/LogisticsControlPanel.xaml
@@ -90,7 +90,8 @@ NavisworksTransport 主控制面板 - 采用与其他视图一致的Navisworks 2
SetPropertyThreadSafe(ref _showPreviewPrompt, value);
}
- ///
- /// 是否显示预览信息
- ///
- public bool ShowPreviewInfo
- {
- get => _showPreviewInfo;
- set => SetPropertyThreadSafe(ref _showPreviewInfo, value);
- }
-
- ///
- /// 预览信息提示消息
- ///
- public string PreviewInfoMessage
- {
- get => _previewInfoMessage;
- set => SetPropertyThreadSafe(ref _previewInfoMessage, value);
- }
///
/// 当前选择文本
@@ -489,15 +470,6 @@ namespace NavisworksTransport.UI.WPF.ViewModels
set => SetPropertyThreadSafe(ref _currentOperationText, value);
}
- ///
- /// 进度详细文本
- ///
- public string ProgressDetailText
- {
- get => _progressDetailText;
- set => SetPropertyThreadSafe(ref _progressDetailText, value);
- }
-
///
/// 进度百分比
///
@@ -829,6 +801,56 @@ namespace NavisworksTransport.UI.WPF.ViewModels
}
}
+ ///
+ /// 构造函数 - 支持统一状态栏
+ ///
+ /// 主ViewModel,用于统一状态栏
+ public LayerManagementViewModel(LogisticsControlViewModel mainViewModel) : base()
+ {
+ try
+ {
+ // 保存主ViewModel引用
+ _mainViewModel = mainViewModel;
+
+ // 获取UI状态管理器实例
+ _uiStateManager = UIStateManager.Instance;
+ // 验证关键组件是否正常初始化
+ if (_uiStateManager == null)
+ {
+ LogManager.Error("UIStateManager初始化失败");
+ throw new InvalidOperationException("UIStateManager初始化失败");
+ }
+
+ // 初始化业务逻辑组件
+ _floorDetector = new FloorDetector();
+ _modelSplitterManager = new ModelSplitterManager();
+ _attributeGrouper = new AttributeGrouper();
+
+ // 初始化命令 - 使用异步Command Pattern
+ InitializeCommands();
+
+ // 订阅事件
+ _modelSplitterManager.ProgressChanged += OnProgressChanged;
+ _modelSplitterManager.StatusChanged += OnStatusChanged;
+
+ // 订阅Navisworks选择变化事件 - 使用新的选择管理服务
+ SubscribeToSelectionEvents();
+
+ // 异步初始化
+ InitializeAsync();
+
+ LogManager.Info("LayerManagementViewModel构造函数执行完成 - 支持统一状态栏");
+ }
+ catch (Exception ex)
+ {
+ LogManager.Error($"LayerManagementViewModel构造函数异常: {ex.Message}", ex);
+
+ // 在构造函数中尽量保证对象处于可用状态
+ CurrentOperationText = "初始化失败,请检查日志";
+ throw;
+ }
+ }
+
#endregion
#region 命令初始化 - 统一的Command Pattern
@@ -944,12 +966,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
IsProcessing = true;
ShowCancelButton = false; // 分析楼层操作不支持取消
CurrentOperationText = "正在分析楼层...";
- ProgressDetailText = "检测模型中的楼层属性";
- ProgressPercentage = 0;
-
- // 初始化预览状态
- ShowPreviewInfo = true;
- PreviewInfoMessage = "正在使用智能遍历模式快速生成预览,仅显示关键节点...";
+ UpdateMainStatus("检测模型中的楼层属性", -1, true);
});
try
@@ -965,12 +982,12 @@ namespace NavisworksTransport.UI.WPF.ViewModels
{
SetFloorAnalysisResult(result.Message, result.StatusColor);
NeedsManualFloorSetup = result.NeedsManualSetup;
- ProgressDetailText = "楼层分析完成";
+ UpdateMainStatus("楼层分析完成");
}
else
{
SetFloorAnalysisResult(result.ErrorMessage, Brushes.Red);
- ProgressDetailText = "楼层分析失败";
+ UpdateMainStatus("楼层分析失败");
}
});
}
@@ -982,7 +999,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
SetFloorAnalysisResult($"分析失败: {ex.Message}", Brushes.Red);
- ProgressDetailText = "操作异常";
+ UpdateMainStatus("操作异常");
});
}
finally
@@ -1008,7 +1025,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
{
IsProcessing = true;
CurrentOperationText = "正在刷新属性列表...";
- ProgressDetailText = "获取模型属性";
+ UpdateMainStatus("获取模型属性");
});
try
@@ -1027,11 +1044,11 @@ namespace NavisworksTransport.UI.WPF.ViewModels
{
AvailableAttributes.Add(attr);
}
- ProgressDetailText = $"成功获取 {result.Attributes.Count} 个属性";
+ UpdateMainStatus($"成功获取 {result.Attributes.Count} 个属性");
}
else
{
- ProgressDetailText = result.ErrorMessage ?? "获取属性失败";
+ UpdateMainStatus(result.ErrorMessage ?? "获取属性失败");
}
});
}
@@ -1043,7 +1060,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
AvailableAttributes.Clear();
- ProgressDetailText = $"刷新失败: {ex.Message}";
+ UpdateMainStatus($"刷新失败: {ex.Message}");
});
}
finally
@@ -1067,7 +1084,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
{
IsProcessing = true;
CurrentOperationText = "正在获取选中节点...";
- ProgressDetailText = "检查当前选择";
+ UpdateMainStatus("检查当前选择");
});
try
@@ -1082,14 +1099,14 @@ namespace NavisworksTransport.UI.WPF.ViewModels
if (result.IsSuccess)
{
SelectedNodesText = NavisworksSelectionHelper.FormatSelectionText(result.Count, result.SelectedItems, "个节点");
- ProgressDetailText = result.Count > 0
+ UpdateMainStatus(result.Count > 0
? $"获取到 {result.Count} 个选中节点"
- : "当前没有选中的节点";
+ : "当前没有选中的节点");
}
else
{
SelectedNodesText = "获取节点失败";
- ProgressDetailText = result.ErrorMessage ?? "选择节点操作失败";
+ UpdateMainStatus(result.ErrorMessage ?? "选择节点操作失败");
}
});
}
@@ -1101,7 +1118,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
SelectedNodesText = "获取节点异常";
- ProgressDetailText = $"操作失败: {ex.Message}";
+ UpdateMainStatus($"操作失败: {ex.Message}");
});
}
finally
@@ -1126,7 +1143,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
IsProcessing = true;
CurrentOperationText = "正在应用楼层属性...";
FloorAttributeStatus = "处理中...";
- ProgressDetailText = "为选中节点设置楼层属性";
+ UpdateMainStatus("为选中节点设置楼层属性");
});
try
@@ -1141,12 +1158,12 @@ namespace NavisworksTransport.UI.WPF.ViewModels
if (result.IsSuccess)
{
FloorAttributeStatus = $"成功为 {result.Count} 个节点设置楼层属性";
- ProgressDetailText = $"属性设置完成,影响 {result.Count} 个节点";
+ UpdateMainStatus($"属性设置完成,影响 {result.Count} 个节点");
}
else
{
FloorAttributeStatus = result.ErrorMessage ?? "楼层属性设置失败";
- ProgressDetailText = "属性设置操作失败";
+ UpdateMainStatus("属性设置操作失败");
}
});
}
@@ -1158,7 +1175,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
FloorAttributeStatus = $"设置失败: {ex.Message}";
- ProgressDetailText = "属性设置异常";
+ UpdateMainStatus("属性设置异常");
});
}
finally
@@ -1184,7 +1201,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
ShowCancelButton = false; // 预览操作不支持取消
CurrentOperationText = "正在生成分层预览...";
ProgressPercentage = 0;
- ProgressDetailText = "准备分层配置";
+ UpdateMainStatus("准备分层配置");
// 清空旧的预览结果
SplitPreviewResults.Clear();
@@ -1192,8 +1209,6 @@ namespace NavisworksTransport.UI.WPF.ViewModels
// 显示加载状态
ShowPreviewResults = false;
ShowPreviewPrompt = false;
- ShowPreviewInfo = true;
- PreviewInfoMessage = "正在使用智能遍历模式快速生成预览...";
// 添加加载提示项
var loadingItem = new SplitPreviewItem
@@ -1245,18 +1260,14 @@ namespace NavisworksTransport.UI.WPF.ViewModels
ShowPreviewResults = true;
ShowPreviewPrompt = false;
- ShowPreviewInfo = true;
- PreviewInfoMessage = $"预览完成:共检测到 {SplitPreviewResults.Count} 个分层(智能遍历仅显示关键节点)";
- ProgressDetailText = $"预览完成,共 {SplitPreviewResults.Count} 个分层";
+ UpdateMainStatus($"预览完成:共检测到 {SplitPreviewResults.Count} 个分层(智能遍历仅显示关键节点)");
}
else
{
// 预览失败或无结果,不在列表中显示错误项,而是隐藏结果列表并显示提示
ShowPreviewResults = false;
ShowPreviewPrompt = true; // 显示提示信息
- ShowPreviewInfo = true; // 显示预览信息提示
- PreviewInfoMessage = result.ErrorMessage ?? "未找到任何分层属性,请先设置模型的分层属性(楼层、区域或子系统)";
- ProgressDetailText = result.ErrorMessage ?? "未找到任何分层属性,请先设置模型的分层属性(楼层、区域或子系统)";
+ UpdateMainStatus(result.ErrorMessage ?? "未找到任何分层属性,请先设置模型的分层属性(楼层、区域或子系统)");
}
});
}
@@ -1272,9 +1283,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
ShowPreviewResults = false;
ShowPreviewPrompt = true; // 显示提示信息
- ShowPreviewInfo = true; // 显示预览信息提示
- PreviewInfoMessage = $"预览异常: {ex.Message}";
- ProgressDetailText = $"预览异常: {ex.Message}";
+ UpdateMainStatus($"预览异常: {ex.Message}");
});
}
finally
@@ -1325,7 +1334,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = "没有选中任何分层进行保存";
- ProgressDetailText = "请勾选需要保存的分层";
+ UpdateMainStatus("请勾选需要保存的分层");
});
return;
}
@@ -1338,7 +1347,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
IsProcessing = true;
ShowCancelButton = true; // 分层保存支持取消
CurrentOperationText = "正在执行分层保存...";
- ProgressDetailText = $"准备保存到: {selectedDirectory}";
+ UpdateMainStatus($"准备保存到: {selectedDirectory}");
});
_cancellationTokenSource = new CancellationTokenSource();
@@ -1378,7 +1387,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = "分层保存完成";
- ProgressDetailText = $"文件已保存到: {selectedDirectory}";
+ UpdateMainStatus($"文件已保存到: {selectedDirectory}");
// 更新OutputDirectory显示(可选)
OutputDirectory = selectedDirectory;
});
@@ -1391,7 +1400,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = "分层保存异常";
- ProgressDetailText = $"保存失败: {ex.Message}";
+ UpdateMainStatus($"保存失败: {ex.Message}");
});
}
finally
@@ -1441,8 +1450,8 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = $"正在处理分层: {preview.LayerName} ({i + 1}/{previewResultsForSave.Count})";
- ProgressPercentage = (double)(i + 1) * 100 / previewResultsForSave.Count;
- ProgressDetailText = $"处理分层 {i + 1}/{previewResultsForSave.Count}: {preview.LayerName}";
+ double percentage = (double)(i + 1) * 100 / previewResultsForSave.Count;
+ UpdateMainStatus($"处理分层 {i + 1}/{previewResultsForSave.Count}: {preview.LayerName}", percentage);
});
try
@@ -1461,7 +1470,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
// 继续处理其他分层,不因单个失败而中断整个进程
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
- ProgressDetailText = errorMsg;
+ UpdateMainStatus(errorMsg);
});
}
}
@@ -1480,7 +1489,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
- ProgressDetailText = finalMessage;
+ UpdateMainStatus(finalMessage);
});
// 如果所有分层都失败,抛出异常
@@ -2116,7 +2125,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
{
IsProcessing = true;
CurrentOperationText = "正在进行环境诊断...";
- ProgressDetailText = "检查Navisworks API环境和线程状态";
+ UpdateMainStatus("检查Navisworks API环境和线程状态");
});
// 2. 纯业务逻辑执行(后台线程)
@@ -2129,7 +2138,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = "环境诊断完成";
- ProgressDetailText = "环境诊断报告已生成";
+ UpdateMainStatus("环境诊断报告已生成");
});
// 显示诊断结果
@@ -2145,7 +2154,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = "环境诊断异常";
- ProgressDetailText = $"诊断失败: {ex.Message}";
+ UpdateMainStatus($"诊断失败: {ex.Message}");
});
ShowDiagnosticResult($"诊断过程中发生异常: {ex.Message}");
@@ -2679,7 +2688,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
_uiStateManager.QueueUIUpdate(() =>
{
ProgressPercentage = e.ProgressPercentage;
- ProgressDetailText = e.UserState?.ToString() ?? "";
+ UpdateMainStatus(e.UserState?.ToString() ?? "");
}, UIUpdatePriority.Normal);
}
@@ -3183,7 +3192,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
IsProcessing = true;
ShowCancelButton = false; // 清除楼层属性不支持取消
CurrentOperationText = "正在清除楼层属性...";
- ProgressDetailText = "正在清除选中模型的楼层属性";
+ UpdateMainStatus("正在清除选中模型的楼层属性");
});
try
@@ -3238,9 +3247,9 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = result.Message;
- ProgressDetailText = result.Success ?
+ UpdateMainStatus(result.Success ?
$"楼层属性清除完成,成功清除 {result.Count}/{result.TotalCount} 个模型项" :
- "楼层属性清除失败";
+ "楼层属性清除失败");
if (result.Success)
{
@@ -3267,7 +3276,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = "清除楼层属性异常";
- ProgressDetailText = $"清除失败: {ex.Message}";
+ UpdateMainStatus($"清除失败: {ex.Message}");
});
}
finally
@@ -3625,7 +3634,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
{
IsProcessing = true;
CurrentOperationText = "正在准备单独显示...";
- ProgressDetailText = $"隐藏除'{SelectedPreviewResult.LayerName}'之外的其他分层";
+ UpdateMainStatus($"隐藏除'{SelectedPreviewResult.LayerName}'之外的其他分层");
});
// 2. 在UI线程执行Navisworks API调用
@@ -3666,12 +3675,12 @@ namespace NavisworksTransport.UI.WPF.ViewModels
if (isolateResult)
{
CurrentOperationText = $"已单独显示: {SelectedPreviewResult.LayerName}";
- ProgressDetailText = "其他分层已隐藏,您可以预览选中的分层内容";
+ UpdateMainStatus("其他分层已隐藏,您可以预览选中的分层内容");
}
else
{
CurrentOperationText = "单独显示失败";
- ProgressDetailText = resultMessage ?? "请检查日志了解详细信息";
+ UpdateMainStatus(resultMessage ?? "请检查日志了解详细信息");
}
});
@@ -3685,7 +3694,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = "单独显示异常";
- ProgressDetailText = $"操作失败: {ex.Message}";
+ UpdateMainStatus($"操作失败: {ex.Message}");
});
}
finally
@@ -3712,7 +3721,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
{
IsProcessing = true;
CurrentOperationText = "正在恢复显示...";
- ProgressDetailText = "恢复所有分层的可见性";
+ UpdateMainStatus("恢复所有分层的可见性");
});
// 2. 在UI线程执行Navisworks API调用
@@ -3744,12 +3753,12 @@ namespace NavisworksTransport.UI.WPF.ViewModels
if (restoreResult)
{
CurrentOperationText = "已恢复所有分层显示";
- ProgressDetailText = "所有分层内容都已可见";
+ UpdateMainStatus("所有分层内容都已可见");
}
else
{
CurrentOperationText = "恢复显示失败";
- ProgressDetailText = resultMessage ?? "请检查日志了解详细信息";
+ UpdateMainStatus(resultMessage ?? "请检查日志了解详细信息");
}
});
@@ -3763,7 +3772,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
await _uiStateManager.ExecuteUIUpdateAsync(() =>
{
CurrentOperationText = "恢复显示异常";
- ProgressDetailText = $"操作失败: {ex.Message}";
+ UpdateMainStatus($"操作失败: {ex.Message}");
});
}
finally
@@ -3777,5 +3786,66 @@ namespace NavisworksTransport.UI.WPF.ViewModels
}
#endregion
+
+ #region 统一状态栏方法
+
+ ///
+ /// 更新统一状态栏(简单版本,不显示进度条)
+ ///
+ private void UpdateMainStatus(string message)
+ {
+ try
+ {
+ // 如果有主ViewModel引用,更新统一状态栏
+ if (_mainViewModel != null)
+ {
+ _mainViewModel.UpdateStatus(message);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Error($"更新统一状态栏失败: {ex.Message}", ex);
+ }
+ }
+
+ ///
+ /// 更新统一状态栏(支持百分比进度)
+ ///
+ private void UpdateMainStatus(string message, double percentage)
+ {
+ try
+ {
+ // 如果有主ViewModel引用,更新统一状态栏
+ if (_mainViewModel != null)
+ {
+ _mainViewModel.UpdateStatus(message, percentage);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Error($"更新统一状态栏失败: {ex.Message}", ex);
+ }
+ }
+
+ ///
+ /// 更新统一状态栏(完整版本,支持不确定进度)
+ ///
+ private void UpdateMainStatus(string message, double progress = -1, bool? isProcessing = null)
+ {
+ try
+ {
+ // 如果有主ViewModel引用,更新统一状态栏
+ if (_mainViewModel != null)
+ {
+ _mainViewModel.UpdateStatus(message, progress, isProcessing);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Error($"更新统一状态栏失败: {ex.Message}", ex);
+ }
+ }
+
+ #endregion
}
}
\ No newline at end of file
diff --git a/src/UI/WPF/ViewModels/LogisticsControlViewModel.cs b/src/UI/WPF/ViewModels/LogisticsControlViewModel.cs
index 90d88d0..a2c28a3 100644
--- a/src/UI/WPF/ViewModels/LogisticsControlViewModel.cs
+++ b/src/UI/WPF/ViewModels/LogisticsControlViewModel.cs
@@ -202,6 +202,26 @@ namespace NavisworksTransport.UI.WPF.ViewModels
set => SetProperty(ref _isProcessing, value);
}
+ ///
+ /// 进度百分比(0-100,-1表示不确定进度)
+ ///
+ public double ProgressPercentage
+ {
+ get => _animationProgress;
+ set
+ {
+ if (SetProperty(ref _animationProgress, value))
+ {
+ OnPropertyChanged(nameof(IsIndeterminateProgress));
+ }
+ }
+ }
+
+ ///
+ /// 是否使用不确定进度模式
+ ///
+ public bool IsIndeterminateProgress => ProgressPercentage < 0;
+
#region 动画控制属性
///
@@ -1002,7 +1022,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
StatusText = message ?? "就绪";
if (progress >= 0)
{
- AnimationProgress = Math.Max(0, Math.Min(100, progress));
+ ProgressPercentage = Math.Max(0, Math.Min(100, progress));
}
if (isProcessing.HasValue)
{
@@ -1011,6 +1031,21 @@ namespace NavisworksTransport.UI.WPF.ViewModels
}, "更新统一状态栏", runOnUIThread: true);
}
+ ///
+ /// 更新统一状态栏信息(支持百分比进度)
+ ///
+ /// 状态消息
+ /// 进度百分比 (0-100)
+ public void UpdateStatus(string message, double percentage)
+ {
+ SafeExecute(() =>
+ {
+ StatusText = message ?? "就绪";
+ ProgressPercentage = Math.Max(0, Math.Min(100, percentage));
+ IsProcessing = true; // 有百分比进度时显示进度条
+ }, "更新统一状态栏(百分比模式)", runOnUIThread: true);
+ }
+
///
/// 重置状态栏到默认状态
///
diff --git a/src/UI/WPF/Views/LayerManagementView.xaml b/src/UI/WPF/Views/LayerManagementView.xaml
index a4166ee..54efdfb 100644
--- a/src/UI/WPF/Views/LayerManagementView.xaml
+++ b/src/UI/WPF/Views/LayerManagementView.xaml
@@ -286,16 +286,6 @@ NavisworksTransport 分层管理页签视图 - 重构优化版本
-
-
-
-
-
@@ -336,26 +326,6 @@ NavisworksTransport 分层管理页签视图 - 重构优化版本
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/UI/WPF/Views/LayerManagementView.xaml.cs b/src/UI/WPF/Views/LayerManagementView.xaml.cs
index b8aaf51..5df69ff 100644
--- a/src/UI/WPF/Views/LayerManagementView.xaml.cs
+++ b/src/UI/WPF/Views/LayerManagementView.xaml.cs
@@ -27,6 +27,19 @@ namespace NavisworksTransport.UI.WPF.Views
DataContext = ViewModel;
}
+ ///
+ /// 带主ViewModel参数的构造函数,支持统一状态栏
+ ///
+ /// 主ViewModel,用于统一状态栏
+ public LayerManagementView(LogisticsControlViewModel mainViewModel)
+ {
+ InitializeComponent();
+
+ // 创建ViewModel,传入主ViewModel引用
+ ViewModel = new LayerManagementViewModel(mainViewModel);
+ DataContext = ViewModel;
+ }
+
///
/// 带ViewModel参数的构造函数
///