实例介绍
Nodify
一个针对基于节点的编辑器设计的高性能控件集合,适用于MVVM。
- 🚀 基于节点的应用程序示例
- 🎨 一个可用于尝试所有可用设置的播放器应用程序。
- 🌓 一个状态机,其中每个状态表示可执行操作,每个转换表示下一个操作执行的条件。
- 💻 一个简单的“实时”计算器,其中每个节点表示一个接受输入并将其输出馈送到其他节点输入的操作。
⭐️ 特点
- 从一开始就设计为与MVVM配合使用
- 除了WPF之外没有其他依赖项
- 针对同时与数百个节点交互进行优化
- 内置深色和浅色主题
- 在接近边缘时进行选择、缩放、平移,并具有自动平移功能
- 选择、移动和连接节点
- 大量可配置的依赖属性
- 准备好撤消/重做
- 示例应用程序:🎨 播放器、🌓 状态机、💻 计算器
【实例截图】
文件清单
└── nodify-045bc94fb0c5c935841379a22983ddd43745a520
├── build
│ ├── Nodify.public.snk
│ └── Nodify.snk
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Examples
│ ├── Nodify.Calculator
│ │ ├── ApplicationViewModel.cs
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── AssemblyInfo.cs
│ │ ├── CalculatorInputOperationViewModel.cs
│ │ ├── CalculatorOperationViewModel.cs
│ │ ├── CalculatorViewModel.cs
│ │ ├── ConnectionViewModel.cs
│ │ ├── ConnectorViewModel.cs
│ │ ├── Converters
│ │ │ └── ItemToListConverter.cs
│ │ ├── CreateOperationInfoViewModel.cs
│ │ ├── EditorViewModel.cs
│ │ ├── EditorView.xaml
│ │ ├── EditorView.xaml.cs
│ │ ├── ExpandoOperationViewModel.cs
│ │ ├── ExpressionOperationViewModel.cs
│ │ ├── MainWindow.xaml
│ │ ├── MainWindow.xaml.cs
│ │ ├── Nodify.Calculator.csproj
│ │ ├── OperationGraphViewModel.cs
│ │ ├── OperationGroupViewModel.cs
│ │ ├── OperationInfoViewModel.cs
│ │ ├── Operations
│ │ │ ├── BinaryOperation.cs
│ │ │ ├── IOperation.cs
│ │ │ ├── OperationFactory.cs
│ │ │ ├── OperationsContainer.cs
│ │ │ ├── ParamsOperation.cs
│ │ │ ├── UnaryOperation.cs
│ │ │ └── ValueOperation.cs
│ │ ├── OperationsExtensions.cs
│ │ ├── OperationsMenuViewModel.cs
│ │ ├── OperationsMenuView.xaml
│ │ ├── OperationsMenuView.xaml.cs
│ │ ├── OperationViewModel.cs
│ │ └── PendingConnectionViewModel.cs
│ ├── Nodify.Playground
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── AssemblyInfo.cs
│ │ ├── BaseSettingViewModel.cs
│ │ ├── Converters
│ │ │ ├── FlowToDirectionConverter.cs
│ │ │ └── UIntToRectConverter.cs
│ │ ├── Editor
│ │ │ ├── CommentNodeViewModel.cs
│ │ │ ├── ConnectionViewModel.cs
│ │ │ ├── ConnectorViewModel.cs
│ │ │ ├── FlowNodeViewModel.cs
│ │ │ ├── GraphSchema.cs
│ │ │ ├── KnotNodeViewModel.cs
│ │ │ ├── NodeViewModel.cs
│ │ │ ├── NodifyEditorViewModel.cs
│ │ │ ├── NodifyEditorView.xaml
│ │ │ ├── NodifyEditorView.xaml.cs
│ │ │ └── PendingConnectionViewModel.cs
│ │ ├── EditorSettings.cs
│ │ ├── EditorSettingsView.xaml
│ │ ├── EditorSettingsView.xaml.cs
│ │ ├── Helpers
│ │ │ ├── NodeViewModelExtensions.cs
│ │ │ └── RandomNodesGenerator.cs
│ │ ├── ISettingViewModel.cs
│ │ ├── MainWindow.xaml
│ │ ├── MainWindow.xaml.cs
│ │ ├── Nodify.Playground.csproj
│ │ ├── PlaygroundSettings.cs
│ │ ├── PlaygroundViewModel.cs
│ │ ├── PointEditor.cs
│ │ ├── PointEditorView.xaml
│ │ ├── PointEditorView.xaml.cs
│ │ ├── ProxySettingViewModel.cs
│ │ ├── SettingsView.xaml
│ │ ├── SettingsView.xaml.cs
│ │ └── Themes
│ │ ├── Brushes.xaml
│ │ ├── Dark.xaml
│ │ ├── Light.xaml
│ │ └── Nodify.xaml
│ ├── Nodify.Shared
│ │ ├── BindingProxy.cs
│ │ ├── BoxValue.cs
│ │ ├── Controls
│ │ │ ├── EditableTextBlock.cs
│ │ │ ├── TabControlEx.cs
│ │ │ └── TabItemEx.cs
│ │ ├── Converters
│ │ │ ├── BooleanToVisibilityConverter.cs
│ │ │ ├── DebugConverter.cs
│ │ │ ├── EnumValuesConverter.cs
│ │ │ ├── RandomBrushConverter.cs
│ │ │ ├── StringToVisibilityConverter.cs
│ │ │ └── ToStringConverter.cs
│ │ ├── DelegateCommand.cs
│ │ ├── FluentSyntax.cs
│ │ ├── NodifyObservableCollection.cs
│ │ ├── Nodify.Shared.csproj
│ │ ├── ObservableObject.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── RequeryCommand.cs
│ │ ├── StringExtensions.cs
│ │ ├── ThemeManager.cs
│ │ └── Themes
│ │ ├── Brushes.xaml
│ │ ├── Controls.xaml
│ │ ├── Dark.xaml
│ │ ├── Generic.xaml
│ │ ├── Icons.xaml
│ │ ├── Light.xaml
│ │ └── Nodify.xaml
│ └── Nodify.StateMachine
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── BlackboardItemReferenceViewModel.cs
│ ├── BlackboardItemViewModel.cs
│ ├── BlackboardKeyEditorViewModel.cs
│ ├── BlackboardKeyEditorView.xaml
│ ├── BlackboardKeyEditorView.xaml.cs
│ ├── BlackboardKeyViewModel.cs
│ ├── BlackboardViewModel.cs
│ ├── Converters
│ │ ├── BlackboardKeyEditorConverter.cs
│ │ ├── ConnectorOffsetConverter.cs
│ │ └── FilterBlackboardKeysConverter.cs
│ ├── Helpers
│ │ └── BlackboardDescriptor.cs
│ ├── MainWindow.xaml
│ ├── MainWindow.xaml.cs
│ ├── Nodify.StateMachine.csproj
│ ├── Runner
│ │ ├── Actions
│ │ │ ├── CopyKeyAction.cs
│ │ │ ├── SetKeyValueAction.cs
│ │ │ └── SetStateDelayAction.cs
│ │ ├── Blackboard
│ │ │ ├── BlackboardConditionSet.cs
│ │ │ ├── Blackboard.cs
│ │ │ ├── BlackboardItemAttribute.cs
│ │ │ ├── BlackboardKey.cs
│ │ │ ├── BlackboardPropertyAttribute.cs
│ │ │ ├── BlackboardProperty.cs
│ │ │ ├── IBlackboardAction.cs
│ │ │ └── IBlackboardCondition.cs
│ │ ├── Conditions
│ │ │ ├── AreEqualCondition.cs
│ │ │ ├── HasKeyCondition.cs
│ │ │ └── HasValueCondition.cs
│ │ ├── Debugging
│ │ │ ├── DebugBlackboardDecorator.cs
│ │ │ ├── DebugStateDecorator.cs
│ │ │ └── DebugTransitionDecorator.cs
│ │ ├── State.cs
│ │ ├── StateMachine.cs
│ │ └── Transition.cs
│ ├── StateMachineRunnerViewModel.cs
│ ├── StateMachineViewModel.cs
│ ├── StateViewModel.cs
│ ├── Themes
│ │ ├── Brushes.xaml
│ │ ├── Dark.xaml
│ │ ├── Light.xaml
│ │ └── Nodify.xaml
│ └── TransitionViewModel.cs
├── icon.png
├── LICENSE
├── Nodify
│ ├── Connections
│ │ ├── BaseConnection.cs
│ │ ├── CircuitConnection.cs
│ │ ├── Connection.cs
│ │ ├── Connector.cs
│ │ ├── LineConnection.cs
│ │ └── PendingConnection.cs
│ ├── DecoratorContainer.cs
│ ├── DecoratorsControl.cs
│ ├── EditorCommands.cs
│ ├── EditorGestures.cs
│ ├── EditorStates
│ │ ├── ContainerDefaultState.cs
│ │ ├── ContainerDraggingState.cs
│ │ ├── ContainerState.cs
│ │ ├── EditorDefaultState.cs
│ │ ├── EditorPanningState.cs
│ │ ├── EditorSelectingState.cs
│ │ └── EditorState.cs
│ ├── Events
│ │ ├── ConnectionEventArgs.cs
│ │ ├── ConnectorEventArgs.cs
│ │ ├── PendingConnectionEventArgs.cs
│ │ └── ResizeEventArgs.cs
│ ├── Helpers
│ │ ├── BoxValue.cs
│ │ ├── DependencyObjectExtensions.cs
│ │ ├── DraggingOptimized.cs
│ │ ├── DraggingSimple.cs
│ │ ├── MultiGesture.cs
│ │ ├── SelectionHelper.cs
│ │ └── UnscaleTransformConverter.cs
│ ├── ItemContainer.cs
│ ├── Nodes
│ │ ├── GroupingNode.cs
│ │ ├── KnotNode.cs
│ │ ├── Node.cs
│ │ ├── NodeInput.cs
│ │ ├── NodeOutput.cs
│ │ └── StateNode.cs
│ ├── NodifyCanvas.cs
│ ├── Nodify.csproj
│ ├── Nodify.csproj.DotSettings
│ ├── NodifyEditor.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── Themes
│ ├── Brushes.xaml
│ ├── Controls.xaml
│ ├── Dark.xaml
│ ├── Generic.xaml
│ ├── Light.xaml
│ ├── Nodify.xaml
│ └── Styles
│ ├── Connection.xaml
│ ├── Connector.xaml
│ ├── Controls.xaml
│ ├── DecoratorContainer.xaml
│ ├── GroupingNode.xaml
│ ├── ItemContainer.xaml
│ ├── KnotNode.xaml
│ ├── NodeInput.xaml
│ ├── NodeOutput.xaml
│ ├── Node.xaml
│ ├── NodifyEditor.xaml
│ ├── PendingConnection.xaml
│ └── StateNode.xaml
├── Nodify.sln
├── Nodify.sln.DotSettings
├── PULL_REQUEST_TEMPLATE.md
└── README.md
34 directories, 214 files
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论