环境接口新增了加载项目文件路径,方便类库在Init事件中自动加载具体的依赖

This commit is contained in:
fengjiayi
2025-03-17 10:14:18 +08:00
parent 41cf0064f6
commit 26e88aea77
29 changed files with 273 additions and 23 deletions

View File

@@ -1372,7 +1372,14 @@ namespace Serein.Workbench
{
// 创建一个 DataObject 用于拖拽操作,并设置拖拽效果
var dragData = new DataObject(MouseNodeType.CreateBaseNodeInCanvas, control.GetType());
DragDrop.DoDragDrop(control, dragData, DragDropEffects.Move);
try
{
DragDrop.DoDragDrop(control, dragData, DragDropEffects.Move);
}
catch (Exception ex)
{
SereinEnv.WriteLine(ex);
}
}
}

View File

@@ -9,6 +9,7 @@ namespace Serein.Workbench.Node.ViewModel
{
public abstract class NodeControlViewModelBase
{
///// <summary>
///// 对应的节点实体类
///// </summary>
@@ -22,6 +23,8 @@ namespace Serein.Workbench.Node.ViewModel
private bool isInterrupt;
private bool isReadonlyOnView = true;
///// <summary>
///// 控制中断状态的视觉效果
///// </summary>
@@ -34,7 +37,14 @@ namespace Serein.Workbench.Node.ViewModel
OnPropertyChanged();
}
}
/// <summary>
/// 工作台预览基本节点时,避免其中的文本框响应拖拽事件导致卡死
/// </summary>
public bool IsEnabledOnView { get => isReadonlyOnView; set
{
OnPropertyChanged(); isReadonlyOnView = value;
}
}
public event PropertyChangedEventHandler? PropertyChanged;

View File

@@ -91,7 +91,7 @@
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Background="#FEFAF4" MinWidth="100" Text="{Binding NodeModel.Expression, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
<TextBox IsEnabled="{Binding IsEnabledOnView}" Grid.Column="0" Background="#FEFAF4" MinWidth="100" Text="{Binding NodeModel.Expression, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Stretch" VerticalAlignment="Center"/>
<local:ResultJunctionControl Grid.Column="1" MyNode="{Binding NodeModel}" x:Name="ResultJunctionControl" HorizontalAlignment="Right"/>

View File

@@ -12,7 +12,9 @@ namespace Serein.Workbench.Node.View
{
// 窗体初始化需要
base.ViewModel = new ConditionNodeControlViewModel (new SingleConditionNode(null));
base.ViewModel.IsEnabledOnView = false;
DataContext = ViewModel;
InitializeComponent();
}

View File

@@ -13,6 +13,7 @@ namespace Serein.Workbench.Node.View
public ConditionRegionControl() : base()
{
base.ViewModel.IsEnabledOnView = false;
InitializeComponent();
}

View File

@@ -39,7 +39,7 @@
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<local:ArgJunctionControl Grid.Column="0" x:Name="ArgJunctionControl" ArgIndex="0" MyNode="{Binding NodeModel}" />
<TextBox Grid.Column="1" Text="{Binding NodeModel.Expression, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch"></TextBox>
<TextBox Grid.Column="1" IsEnabled="{Binding IsEnabledOnView}" Text="{Binding NodeModel.Expression, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch"></TextBox>
<local:ResultJunctionControl Grid.Column="2" MyNode="{Binding NodeModel}" x:Name="ResultJunctionControl" HorizontalAlignment="Right"/>
</Grid>

View File

@@ -12,6 +12,7 @@ namespace Serein.Workbench.Node.View
{
// 窗体初始化需要
ViewModel = new ExpOpNodeControlViewModel(new SingleExpOpNode(null));
base.ViewModel.IsEnabledOnView = false;
DataContext = ViewModel;
InitializeComponent();
}

View File

@@ -54,7 +54,7 @@
<StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal">
<TextBlock Text="全局数据名称" Margin="2" HorizontalAlignment="Stretch" VerticalAlignment="Center"/>
<TextBox MinWidth="50" Margin="2" Text="{Binding NodeModel.KeyName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
<TextBox IsEnabled="{Binding IsEnabledOnView}" MinWidth="50" Margin="2" Text="{Binding NodeModel.KeyName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Stretch" VerticalAlignment="Center">
</TextBox>
<Button Content="EXP" Command="{Binding CommandCopyDataExp}" Height="17.2"></Button>

View File

@@ -12,6 +12,7 @@ namespace Serein.Workbench.Node.View
{
// 窗体初始化需要
base.ViewModel = new GlobalDataNodeControlViewModel(new SingleGlobalDataNode(null));
base.ViewModel.IsEnabledOnView = false;
DataContext = ViewModel;
InitializeComponent();
}

View File

@@ -59,7 +59,7 @@
<!--<Button Content="刷新 " Command="{Binding CommandCopyDataExp}" Height="17.2" Margin="2,0,0,0"></Button>-->
</StackPanel>
<themes:MethodDetailsControl Grid.Row="1" x:Name="MethodDetailsControl" MethodDetails="{Binding NodeModel.MethodDetails}"/>
<TextBox Grid.Row="2" MinHeight="20" MinWidth="100" MaxWidth="270" TextWrapping="Wrap" AcceptsReturn="True" Text="{Binding Script}"></TextBox>
<TextBox Grid.Row="2" MinHeight="20" MinWidth="100" MaxWidth="270" TextWrapping="Wrap" AcceptsReturn="True" IsEnabled="{Binding IsEnabledOnView}" Text="{Binding Script}"></TextBox>
<Grid Grid.Row="3" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>

View File

@@ -29,6 +29,9 @@ namespace Serein.Workbench.Node.View
public ScriptNodeControl()
{
base.ViewModel = new ScriptNodeControlViewModel(null);
base.ViewModel.IsEnabledOnView = false;
base.DataContext = viewModel;
InitializeComponent();
}
public ScriptNodeControl(ScriptNodeControlViewModel viewModel) : base(viewModel)

View File

@@ -24,6 +24,7 @@ namespace Serein.Workbench.Node.View
{
public UINodeControl()
{
base.ViewModel.IsEnabledOnView = true;
InitializeComponent();
}

View File

@@ -8,6 +8,7 @@ namespace Serein.Workbench.Node.ViewModel
/// </summary>
public class ConditionNodeControlViewModel : NodeControlViewModelBase
{
public new SingleConditionNode NodeModel { get; }
/// <summary>

View File

@@ -57,9 +57,13 @@
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="OpenCvSharp4.Extensions" Version="4.10.0.20241108" />
<!--<PackageReference Include="Lagrange.Core" Version="0.3.1" />-->
<!--<PackageReference Include="SixLabors.ImageSharp" Version="3.1.6" />-->
<!--<PackageReference Include="ZXing.Net.Bindings.ImageSharp" Version="0.16.15" />-->

View File

@@ -169,7 +169,7 @@
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" MinWidth="50" Text="{Binding DataValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox Grid.Column="0" MinWidth="50" Text="{Binding DataValue, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"/>
</Grid>
</DataTemplate>
</Setter.Value>