mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-04-30 19:43:28 +08:00
1. 重新设计了Generate项目及相关特性的命名,避免与其他类型混淆。
2. 补充了部分注释。 3. 修改了删除容器节点时,容器内子节点未正确删除的问题。
This commit is contained in:
@@ -9,8 +9,14 @@ using System.Windows;
|
||||
|
||||
namespace Serein.Workbench.Themes
|
||||
{
|
||||
/// <summary>
|
||||
/// BindableRichTextBox 是一个可绑定的 RichTextBox 控件,允许将 FlowDocument 对象绑定到其 Document 属性。
|
||||
/// </summary>
|
||||
public partial class BindableRichTextBox : RichTextBox
|
||||
{
|
||||
/// <summary>
|
||||
/// BindableRichTextBox 的依赖属性,允许绑定 FlowDocument 对象到 RichTextBox 的 Document 属性。
|
||||
/// </summary>
|
||||
public new FlowDocument Document
|
||||
{
|
||||
get { return (FlowDocument)GetValue(DocumentProperty); }
|
||||
|
||||
@@ -26,6 +26,9 @@ namespace Serein.Workbench.Themes
|
||||
{
|
||||
public Action<string,object> SelectObj { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// IOC对象视图控件
|
||||
/// </summary>
|
||||
public IOCObjectViewControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -89,6 +92,9 @@ namespace Serein.Workbench.Themes
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 清空所有实例显示
|
||||
/// </summary>
|
||||
public void ClearObjItem()
|
||||
{
|
||||
DependenciesListBox.Dispatcher.Invoke(() =>
|
||||
@@ -108,6 +114,10 @@ namespace Serein.Workbench.Themes
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 移除一个实例的显示
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
public void RemoveDependenciesInstance(string key)
|
||||
{
|
||||
object? itemControl = null;
|
||||
|
||||
@@ -19,8 +19,14 @@ namespace Serein.Workbench.Themes
|
||||
/// </summary>
|
||||
public partial class InputDialog : Window
|
||||
{
|
||||
/// <summary>
|
||||
/// 输入对话框的输入值
|
||||
/// </summary>
|
||||
public string InputValue { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 初始化输入对话框的新实例
|
||||
/// </summary>
|
||||
public InputDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
@@ -11,9 +11,19 @@ using System.Windows.Input;
|
||||
|
||||
namespace Serein.Workbench.Themes
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 描述或名称转换器
|
||||
/// </summary>
|
||||
public class DescriptionOrNameConverter : IMultiValueConverter
|
||||
{
|
||||
/// <summary>
|
||||
/// 将源类型的数组转换为目标类型的值。
|
||||
/// </summary>
|
||||
/// <param name="values"></param>
|
||||
/// <param name="targetType"></param>
|
||||
/// <param name="parameter"></param>
|
||||
/// <param name="culture"></param>
|
||||
/// <returns></returns>
|
||||
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
string description = values[0] as string;
|
||||
@@ -21,15 +31,34 @@ namespace Serein.Workbench.Themes
|
||||
return string.IsNullOrWhiteSpace(description) ? name : description;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将值从目标类型转换回源类型的数组。
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="targetTypes"></param>
|
||||
/// <param name="parameter"></param>
|
||||
/// <param name="culture"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 多条件转换器,根据参数类型和是否启用来决定返回的模板
|
||||
/// </summary>
|
||||
public class MultiConditionConverter : IMultiValueConverter
|
||||
{
|
||||
/// <summary>
|
||||
/// 将源类型的数组转换为目标类型的值。
|
||||
/// </summary>
|
||||
/// <param name="values"></param>
|
||||
/// <param name="targetType"></param>
|
||||
/// <param name="parameter"></param>
|
||||
/// <param name="culture"></param>
|
||||
/// <returns></returns>
|
||||
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if (values.Length == 2 && values[0] is Type valueType && values[1] is bool isEnabled)
|
||||
@@ -51,30 +80,53 @@ namespace Serein.Workbench.Themes
|
||||
return DependencyProperty.UnsetValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将值从目标类型转换回源类型的数组。
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="targetTypes"></param>
|
||||
/// <param name="parameter"></param>
|
||||
/// <param name="culture"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 数据上下文代理类,用于绑定到DataContextProperty
|
||||
/// </summary>
|
||||
public class DataContextProxy : Freezable
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据上下文代理类构造函数
|
||||
/// </summary>
|
||||
public DataContextProxy()
|
||||
{
|
||||
BindingOperations.SetBinding(this, DataContextProperty, new Binding());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 数据上下文属性
|
||||
/// </summary>
|
||||
public ParameterDetails DataContext
|
||||
{
|
||||
get { return (ParameterDetails)GetValue(DataContextProperty); }
|
||||
set { SetValue(DataContextProperty, value); }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 数据上下文依赖属性
|
||||
/// </summary>
|
||||
public static readonly DependencyProperty DataContextProperty = FrameworkElement
|
||||
.DataContextProperty.AddOwner(typeof(DataContextProxy));
|
||||
|
||||
/// <summary>
|
||||
/// 创建一个新的实例,重写Freezable的CreateInstanceCore方法。
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override Freezable CreateInstanceCore()
|
||||
{
|
||||
return new DataContextProxy();
|
||||
@@ -123,10 +175,15 @@ namespace Serein.Workbench.Themes
|
||||
//var MethodDetails = (MethodDetails)args.NewValue;
|
||||
//MethodDetails.ExplicitDatas[0].
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加参数命令
|
||||
/// </summary>
|
||||
|
||||
public ICommand CommandAddParams { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 方法参数控件构造函数
|
||||
/// </summary>
|
||||
public MethodDetailsControl()
|
||||
{
|
||||
CommandAddParams = new RelayCommand(ExecuteAddParams);
|
||||
|
||||
@@ -9,6 +9,9 @@ using static Serein.Workbench.Themes.TypeViewerWindow;
|
||||
namespace Serein.Workbench.Themes
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// FlowDataDetails 类用于存储对象的详细信息,包括名称、类型、数据类型、数据值和数据路径等。
|
||||
/// </summary>
|
||||
public class FlowDataDetails
|
||||
{
|
||||
/// <summary>
|
||||
@@ -83,11 +86,12 @@ namespace Serein.Workbench.Themes
|
||||
|
||||
// 用于存储当前展开的节点路径
|
||||
private HashSet<string> expandedNodePaths = new HashSet<string>();
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 加载对象信息,展示其成员
|
||||
/// </summary>
|
||||
/// <param name="key">与对象关联的Key,用于管理对象</param>
|
||||
/// <param name="obj">要展示的对象</param>
|
||||
public void LoadObjectInformation(string key, object obj)
|
||||
{
|
||||
@@ -113,7 +117,7 @@ namespace Serein.Workbench.Themes
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private async void UpMonitorExpressionButton_Click(object sender, RoutedEventArgs e)
|
||||
private void UpMonitorExpressionButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//if (FlowEnvironment is not null && await FlowEnvironment.AddInterruptExpressionAsync(monitorKey, MonitorExpression)) // 对象预览器尝试添加中断表达式
|
||||
//{
|
||||
@@ -441,6 +445,7 @@ namespace Serein.Workbench.Themes
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <param name="property"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
private string GetPropertyValue(object obj, PropertyInfo property,out object? value)
|
||||
{
|
||||
@@ -469,6 +474,7 @@ namespace Serein.Workbench.Themes
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <param name="field"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
private string GetFieldValue(object obj, FieldInfo field, out object? value)
|
||||
{
|
||||
@@ -486,6 +492,7 @@ namespace Serein.Workbench.Themes
|
||||
|
||||
}
|
||||
}
|
||||
#if false
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -651,3 +658,5 @@ namespace Serein.Workbench.Themes
|
||||
|
||||
//}
|
||||
|
||||
|
||||
#endif
|
||||
@@ -157,7 +157,9 @@ namespace Serein.Workbench.Themes
|
||||
/// <summary>
|
||||
/// 设置子项节点的事件
|
||||
/// </summary>
|
||||
/// <param name="memberNode"></param>
|
||||
/// <param name="member"></param>
|
||||
/// <param name="contextMenu"></param>
|
||||
/// <returns></returns>
|
||||
private bool ConfigureTreeItemMenu(TreeViewItem memberNode, MemberInfo member,out ContextMenu? contextMenu)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user