diff --git a/.idea/.idea.ShrlAlgoToolkit/.idea/copilot.data.migration.agent.xml b/.idea/.idea.ShrlAlgoToolkit/.idea/copilot.data.migration.agent.xml
new file mode 100644
index 0000000..4ea72a9
--- /dev/null
+++ b/.idea/.idea.ShrlAlgoToolkit/.idea/copilot.data.migration.agent.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.ShrlAlgoToolkit/.idea/copilot.data.migration.edit.xml b/.idea/.idea.ShrlAlgoToolkit/.idea/copilot.data.migration.edit.xml
new file mode 100644
index 0000000..8648f94
--- /dev/null
+++ b/.idea/.idea.ShrlAlgoToolkit/.idea/copilot.data.migration.edit.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/NeoUI/NeoUI/Assists/WindowAssist.cs b/NeoUI/NeoUI/Assists/WindowAssist.cs
index a22b34b..cb0be8f 100644
--- a/NeoUI/NeoUI/Assists/WindowAssist.cs
+++ b/NeoUI/NeoUI/Assists/WindowAssist.cs
@@ -30,35 +30,4 @@ public class WindowAssist
///
public static readonly DependencyProperty TitleBarBackgroundProperty =
DependencyProperty.RegisterAttached("TitleBarBackground", typeof(Brush), typeof(WindowAssist));
-
- ///
- /// 附加属性,用于手动控制控件的视觉状态。
- /// XAML中的Triggers将绑定到此属性,而不是IsMouseOver或IsPressed。
- ///
- public static readonly DependencyProperty WindowButtonStateProperty =
- DependencyProperty.RegisterAttached(
- "WindowButtonState", // 属性名
- typeof(WindowButtonState), // 属性类型 (我们定义的枚举)
- typeof(WindowAssist), // 拥有者类
- new PropertyMetadata(WindowButtonState.Normal)); // 默认值
-
- public static WindowButtonState GetWindowButtonState(DependencyObject obj)
- {
- return (WindowButtonState)obj.GetValue(WindowButtonStateProperty);
- }
-
- public static void SetWindowButtonState(DependencyObject obj, WindowButtonState value)
- {
- obj.SetValue(WindowButtonStateProperty, value);
- }
-
-}
-/// 定义自定义窗口按钮的视觉状态。
-///
-public enum WindowButtonState
-{
- Normal,
- MouseOver,
- Pressed,
- Disabled
}
\ No newline at end of file
diff --git a/NeoUI/NeoUI/Controls/AdornerPopup.cs b/NeoUI/NeoUI/Controls/AdornerPopup.cs
deleted file mode 100644
index 86be945..0000000
--- a/NeoUI/NeoUI/Controls/AdornerPopup.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-
-namespace NeoUI.Controls
-{
- ///
- /// 一个使用AdornerLayer实现、可作为原生Popup直接替代品的控件。
- /// 它能被窗口和ScrollViewer正确裁剪。
- ///
- public class AdornerPopup : ContentControl
- {
- private Adorner? _adorner;
-
- // 【修正】将 _childCache 的类型从 UIElement? 更改为 FrameworkElement?
- private FrameworkElement? _childCache;
-
- #region Dependency Properties (模仿原生Popup)
-
- public static readonly DependencyProperty IsOpenProperty =
- DependencyProperty.Register("IsOpen", typeof(bool), typeof(AdornerPopup),
- new PropertyMetadata(false, OnIsOpenChanged));
-
- public bool IsOpen
- {
- get => (bool)GetValue(IsOpenProperty);
- set => SetValue(IsOpenProperty, value);
- }
-
- public static readonly DependencyProperty PlacementTargetProperty =
- DependencyProperty.Register("PlacementTarget", typeof(UIElement), typeof(AdornerPopup),
- new PropertyMetadata(null));
-
- public UIElement PlacementTarget
- {
- get => (UIElement)GetValue(PlacementTargetProperty);
- set => SetValue(PlacementTargetProperty, value);
- }
-
- #endregion
-
- private static void OnIsOpenChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- if (d is AdornerPopup popup)
- {
- popup.UpdateAdorner();
- }
- }
-
- private void UpdateAdorner()
- {
- var target = PlacementTarget ?? this;
- var adornerLayer = AdornerLayer.GetAdornerLayer(target);
- if (adornerLayer == null) return;
-
- if (IsOpen)
- {
- if (_adorner != null) return;
-
- // 【修正】将 Content 转换为 FrameworkElement
- _childCache = Content as FrameworkElement;
- if (_childCache == null) return;
-
- Content = null;
-
- // 关键:将自身的DataContext传递给弹出的内容,以修复MVVM绑定
- // 因为 _childCache 现在是 FrameworkElement 类型,所以可以访问 DataContext
- _childCache.DataContext = DataContext;
-
- _adorner = new ContentAdorner(target, _childCache);
- adornerLayer.Add(_adorner);
- }
- else
- {
- if (_adorner == null) return;
-
- adornerLayer.Remove(_adorner);
-
- if (_childCache != null)
- {
- // 清理 DataContext
- _childCache.DataContext = null;
- // 恢复内容
- Content = _childCache;
- _childCache = null;
- }
-
- _adorner = null;
- }
- }
- }
-}
diff --git a/NeoUI/NeoUI/Controls/ButtonsStyle.xaml b/NeoUI/NeoUI/Controls/ButtonsStyle.xaml
index 4f19768..01389e7 100644
--- a/NeoUI/NeoUI/Controls/ButtonsStyle.xaml
+++ b/NeoUI/NeoUI/Controls/ButtonsStyle.xaml
@@ -327,7 +327,7 @@
-
+
@@ -347,7 +347,7 @@
-
+
@@ -365,7 +365,7 @@
-
+
@@ -383,7 +383,7 @@
-
+
@@ -401,7 +401,7 @@
-
+
diff --git a/NeoUI/NeoUI/Controls/CalendarStyle.xaml b/NeoUI/NeoUI/Controls/CalendarStyle.xaml
index 7e1a61f..f1d4c19 100644
--- a/NeoUI/NeoUI/Controls/CalendarStyle.xaml
+++ b/NeoUI/NeoUI/Controls/CalendarStyle.xaml
@@ -43,7 +43,7 @@
-
+
diff --git a/NeoUI/NeoUI/Controls/CheckableTag.xaml b/NeoUI/NeoUI/Controls/CheckableTag.xaml
index fb001cc..b412d60 100644
--- a/NeoUI/NeoUI/Controls/CheckableTag.xaml
+++ b/NeoUI/NeoUI/Controls/CheckableTag.xaml
@@ -72,7 +72,7 @@
-
+
diff --git a/NeoUI/NeoUI/Controls/ComboBoxStyle.xaml b/NeoUI/NeoUI/Controls/ComboBoxStyle.xaml
index 55ead87..1af06ce 100644
--- a/NeoUI/NeoUI/Controls/ComboBoxStyle.xaml
+++ b/NeoUI/NeoUI/Controls/ComboBoxStyle.xaml
@@ -226,7 +226,6 @@
-
+
+
+
diff --git a/NeoUI/NeoUI/Controls/ContentAdorner.cs b/NeoUI/NeoUI/Controls/ContentAdorner.cs
deleted file mode 100644
index 6e69038..0000000
--- a/NeoUI/NeoUI/Controls/ContentAdorner.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Documents;
-using System.Windows.Media;
-
-namespace NeoUI.Controls
-{
- public class ContentAdorner : Adorner
- {
- private readonly Grid _container;
- private readonly ContentPresenter _contentPresenter;
- private double _offsetY;
-
- public ContentAdorner(UIElement adornedElement, UIElement content) : base(adornedElement)
- {
- _container = new Grid { Background = Brushes.Transparent };
- _contentPresenter = new ContentPresenter { Content = content };
- _container.Children.Add(_contentPresenter);
- AddLogicalChild(_container);
- AddVisualChild(_container);
- }
-
- protected override int VisualChildrenCount => 1;
- protected override Visual GetVisualChild(int index) => _container;
-
- public override GeneralTransform GetDesiredTransform(GeneralTransform transform)
- {
- var result = new GeneralTransformGroup();
- result.Children.Add(base.GetDesiredTransform(transform));
- result.Children.Add(new TranslateTransform(0, _offsetY));
- return result;
- }
-
- protected override Size MeasureOverride(Size constraint)
- {
- _container.Measure(constraint);
- return _container.DesiredSize;
- }
-
- protected override Size ArrangeOverride(Size finalSize)
- {
- var finalRect = new Rect(new Point(0, 0), finalSize);
- if (_contentPresenter.Content is FrameworkElement contentElement)
- {
- _offsetY = AdornedElement.RenderSize.Height + contentElement.Margin.Top;
- }
- else
- {
- _offsetY = AdornedElement.RenderSize.Height;
- }
- _container.Arrange(finalRect);
- return finalSize;
- }
- }
-}
diff --git a/NeoUI/NeoUI/Controls/FlattenTextBox.xaml b/NeoUI/NeoUI/Controls/FlattenTextBox.xaml
index c4bb3b9..d68e22c 100644
--- a/NeoUI/NeoUI/Controls/FlattenTextBox.xaml
+++ b/NeoUI/NeoUI/Controls/FlattenTextBox.xaml
@@ -15,7 +15,7 @@
-
+
@@ -29,23 +29,23 @@
SnapsToDevicePixels="True"
x:Name="border">
-
+
-
+
-
+
diff --git a/NeoUI/NeoUI/Controls/ListBoxStyle.xaml b/NeoUI/NeoUI/Controls/ListBoxStyle.xaml
index d7afb5c..e3bdb3e 100644
--- a/NeoUI/NeoUI/Controls/ListBoxStyle.xaml
+++ b/NeoUI/NeoUI/Controls/ListBoxStyle.xaml
@@ -2,6 +2,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:assists="clr-namespace:NeoUI.Assists"
+ xmlns:controls="clr-namespace:NeoUI.Controls"
xmlns:converters="clr-namespace:NeoUI.Converters"
xmlns:decorations="clr-namespace:NeoUI.Controls.Decorations"
xmlns:internal="clr-namespace:NeoUI.Converters.Internal">
@@ -34,8 +35,8 @@
Padding="-4"
CornerRadius="{Binding Path=(assists:ControlAssist.CornerRadius), RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}}"
Intensity="0.2"
- Visibility="Collapsed"
- ShaderEnabled="False"/>
+ ShaderEnabled="False"
+ Visibility="Collapsed" />
-
+
@@ -101,7 +102,7 @@
-
+
@@ -172,7 +173,7 @@
-
+
@@ -250,7 +251,8 @@
-
+
+
@@ -259,7 +261,7 @@
-
+
@@ -269,9 +271,12 @@
+
+
+
-
-
+
+
+
+
\ No newline at end of file
diff --git a/NeoUI/NeoUI/Controls/ListViewStyle.xaml b/NeoUI/NeoUI/Controls/ListViewStyle.xaml
index 697a933..8c891a3 100644
--- a/NeoUI/NeoUI/Controls/ListViewStyle.xaml
+++ b/NeoUI/NeoUI/Controls/ListViewStyle.xaml
@@ -246,7 +246,7 @@
-
+
diff --git a/NeoUI/NeoUI/Controls/MenuStyle.xaml b/NeoUI/NeoUI/Controls/MenuStyle.xaml
index 4313018..cc22713 100644
--- a/NeoUI/NeoUI/Controls/MenuStyle.xaml
+++ b/NeoUI/NeoUI/Controls/MenuStyle.xaml
@@ -154,13 +154,14 @@
-
+
diff --git a/NeoUI/NeoUI/Controls/Pill.xaml b/NeoUI/NeoUI/Controls/Pill.xaml
index bc64534..318ba3d 100644
--- a/NeoUI/NeoUI/Controls/Pill.xaml
+++ b/NeoUI/NeoUI/Controls/Pill.xaml
@@ -10,9 +10,9 @@
-
+
-
+
diff --git a/NeoUI/NeoUI/Controls/ScrollViewerStyle.xaml b/NeoUI/NeoUI/Controls/ScrollViewerStyle.xaml
index 7b5a9e7..8f59b29 100644
--- a/NeoUI/NeoUI/Controls/ScrollViewerStyle.xaml
+++ b/NeoUI/NeoUI/Controls/ScrollViewerStyle.xaml
@@ -105,8 +105,8 @@
-
-
+
+
@@ -143,7 +143,7 @@
-
-
+
\ No newline at end of file
diff --git a/NeoUI/NeoUI/Controls/TreeViewStyle.xaml b/NeoUI/NeoUI/Controls/TreeViewStyle.xaml
index 0d87a5a..4e7e6e2 100644
--- a/NeoUI/NeoUI/Controls/TreeViewStyle.xaml
+++ b/NeoUI/NeoUI/Controls/TreeViewStyle.xaml
@@ -178,8 +178,8 @@
-
-
+
+
@@ -190,7 +190,7 @@
-
+
@@ -198,7 +198,7 @@
-
+
diff --git a/NeoUI/NeoUI/Controls/WindowStyle.xaml b/NeoUI/NeoUI/Controls/WindowStyle.xaml
index 1c86de7..ec29f58 100644
--- a/NeoUI/NeoUI/Controls/WindowStyle.xaml
+++ b/NeoUI/NeoUI/Controls/WindowStyle.xaml
@@ -8,13 +8,13 @@
-
@@ -125,8 +100,8 @@
+ EditingElementStyle="{StaticResource DataGridCheckBox}"
+ ElementStyle="{StaticResource DataGridCheckBox}">
-
@@ -112,8 +114,8 @@
+ EditingElementStyle="{StaticResource DataGridCheckBox}"
+ ElementStyle="{StaticResource DataGridCheckBox}">
@@ -177,7 +179,7 @@
IsEnabled="{Binding CanInput}"
Margin="5"
ui:InputAssist.Placeholder="前缀">
-
+
@@ -187,7 +189,7 @@
IsEnabled="{Binding CanInput}"
Margin="5"
ui:InputAssist.Placeholder="后缀">
-
+
diff --git a/ShrlAlgoToolkit.RevitAddins/RvIndependent/NetworkCreator/NetworkCreatorView.xaml b/ShrlAlgoToolkit.RevitAddins/RvIndependent/NetworkCreator/NetworkCreatorView.xaml
index eeb3a7a..04bd8a9 100644
--- a/ShrlAlgoToolkit.RevitAddins/RvIndependent/NetworkCreator/NetworkCreatorView.xaml
+++ b/ShrlAlgoToolkit.RevitAddins/RvIndependent/NetworkCreator/NetworkCreatorView.xaml
@@ -1,5 +1,5 @@
+ ui:ButtonAssist.Icon="{ui:Icon SymbolValue=PlugConnect}" />
diff --git a/ShrlAlgoToolkit.RevitAddins/RvMEP/FlipWorkplaneCmd.cs b/ShrlAlgoToolkit.RevitAddins/RvMEP/FlipWorkplaneCmd.cs
index 9187a73..3b6f98d 100644
--- a/ShrlAlgoToolkit.RevitAddins/RvMEP/FlipWorkplaneCmd.cs
+++ b/ShrlAlgoToolkit.RevitAddins/RvMEP/FlipWorkplaneCmd.cs
@@ -1,5 +1,6 @@
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
+
using Nice3point.Revit.Toolkit.External;
@@ -11,27 +12,34 @@ namespace ShrlAlgoToolkit.RevitAddins.RvMEP
{
public override void Execute()
{
- ICollection familyInstances;
- if (UiDocument.Selection.GetElementIds().Count > 0)
+ try
+ {
+ ICollection familyInstances;
+ if (UiDocument.Selection.GetElementIds().Count > 0)
+ {
+ familyInstances = UiDocument.Selection.GetElementIds().Select(Document.GetElement).OfType().ToList();
+
+ }
+ else
+ {
+ familyInstances = UiDocument.SelectObjects("请选择族实例");
+ }
+ Document.Invoke(
+ ts =>
+ {
+ foreach (var ins in familyInstances)
+ {
+ if (ins.CanFlipWorkPlane)
+ {
+ ins.IsWorkPlaneFlipped = !ins.IsWorkPlaneFlipped;
+ }
+ }
+ });
+ }
+ catch (Exception ex)
{
- familyInstances = UiDocument.Selection.GetElementIds().Select(Document.GetElement).OfType().ToList();
}
- else
- {
- familyInstances = UiDocument.SelectObjects("请选择族实例");
- }
- Document.Invoke(
- ts =>
- {
- foreach (var ins in familyInstances)
- {
- if (ins.CanFlipWorkPlane)
- {
- ins.IsWorkPlaneFlipped = !ins.IsWorkPlaneFlipped;
- }
- }
- });
}
}
}
\ No newline at end of file
diff --git a/ShrlAlgoToolkit.RevitAddins/RvMEP/HeadroomCheckView.xaml b/ShrlAlgoToolkit.RevitAddins/RvMEP/HeadroomCheckView.xaml
index 2eed789..dc58569 100644
--- a/ShrlAlgoToolkit.RevitAddins/RvMEP/HeadroomCheckView.xaml
+++ b/ShrlAlgoToolkit.RevitAddins/RvMEP/HeadroomCheckView.xaml
@@ -7,6 +7,7 @@
x:Class="ShrlAlgoToolkit.RevitAddins.RvMEP.HeadroomCheckView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
+ xmlns:conv="clr-namespace:ShrlAlgoToolkit.RevitAddins.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ShrlAlgoToolkit.RevitAddins.RvMEP"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -36,7 +37,7 @@
-
+
diff --git a/ShrlAlgoToolkit.RevitAddins/RvMEP/RotateMEPView.xaml b/ShrlAlgoToolkit.RevitAddins/RvMEP/RotateMEPView.xaml
index 4b6d013..3833f4b 100644
--- a/ShrlAlgoToolkit.RevitAddins/RvMEP/RotateMEPView.xaml
+++ b/ShrlAlgoToolkit.RevitAddins/RvMEP/RotateMEPView.xaml
@@ -81,7 +81,7 @@
-
+
-