diff --git a/src/UI/WPF/ViewModels/AliasNodeViewModel.cs b/src/UI/WPF/ViewModels/AliasNodeViewModel.cs index 8321c58..7108813 100644 --- a/src/UI/WPF/ViewModels/AliasNodeViewModel.cs +++ b/src/UI/WPF/ViewModels/AliasNodeViewModel.cs @@ -47,8 +47,8 @@ namespace NavisworksTransport.UI.WPF.ViewModels { _alias = value; HasAlias = !string.IsNullOrEmpty(value); - // 更新显示文本 - DisplayName = HasAlias ? value : (OriginalName ?? "?"); + // 更新显示文本:别名 [原名] + DisplayName = HasAlias ? value : (_originalName ?? "?"); OnPropertyChanged(nameof(Alias)); } } @@ -62,9 +62,9 @@ namespace NavisworksTransport.UI.WPF.ViewModels if (_isEditing == value) return; _isEditing = value; OnPropertyChanged(nameof(IsEditing)); - // 进入编辑时初始化 EditValue 为当前显示名 + // 进入编辑时初始化 EditValue 为当前别名(无别名用原名) if (value) - EditValue = DisplayName; + EditValue = HasAlias ? Alias : (OriginalName ?? ""); } } diff --git a/src/UI/WPF/Views/AliasTreeControl.xaml b/src/UI/WPF/Views/AliasTreeControl.xaml index fd05572..61213f4 100644 --- a/src/UI/WPF/Views/AliasTreeControl.xaml +++ b/src/UI/WPF/Views/AliasTreeControl.xaml @@ -18,33 +18,62 @@ - - - - - - + + + + + + + + + + + + + + + + + private void OnTreeViewSelected(AliasNodeViewModel node) { - LogManager.Info($"[别名树] 树点击: NodeKey={node.NodeKey}, OriginalName={node.OriginalName}, ModelItem={node.ModelItem?.DisplayName ?? "null"}"); + LogManager.Info($"[别名树] OnTreeViewSelected 进入: {node.OriginalName}"); _isInternalSelection = true; try @@ -135,9 +135,11 @@ namespace NavisworksTransport.UI.WPF.Views var doc = NavisApplication.ActiveDocument; if (doc != null && node.ModelItem != null) { + LogManager.Info("[别名树] OnTreeViewSelected 设置NW选择"); var coll = new Autodesk.Navisworks.Api.ModelItemCollection { node.ModelItem }; doc.CurrentSelection.Clear(); doc.CurrentSelection.CopyFrom(coll); + LogManager.Info("[别名树] OnTreeViewSelected 设置完成"); } } catch (Exception ex) @@ -148,6 +150,7 @@ namespace NavisworksTransport.UI.WPF.Views { _isInternalSelection = false; } + LogManager.Info("[别名树] OnTreeViewSelected 退出"); } private void StartInlineEdit(AliasNodeViewModel node, TreeViewItem tvi) @@ -630,6 +633,8 @@ namespace NavisworksTransport.UI.WPF.Views if (_currentSelectionItem == null || _dataStore == null) return; string input = TxtAliasInput.Text?.Trim(); if (string.IsNullOrEmpty(input)) return; + if (input == _currentSelectionItem?.DisplayName) + input = null; var identity = AliasNodeIdentity.FromModelItem(_currentSelectionItem); LogManager.Info($"[别名树] 保存别名: {input}, NodeKey={identity.ToKey()}"); @@ -742,6 +747,8 @@ namespace NavisworksTransport.UI.WPF.Views if (textBox?.DataContext is AliasNodeViewModel node) { string newAlias = textBox.Text?.Trim(); + if (string.IsNullOrEmpty(newAlias) || newAlias == node.OriginalName) + newAlias = null; LogManager.Info($"[别名树] 内联编辑: {newAlias}, NodeKey={node.NodeKey}"); if (_dataStore != null) { @@ -751,7 +758,6 @@ namespace NavisworksTransport.UI.WPF.Views node.Alias = newAlias; node.IsEditing = false; - // 清除别名高亮 / 应用别名高亮 ApplyAliasHighlight(node.NodeKey, node.HasAlias); } }