FunctionZero.TreeZero
2.0.0
dotnet add package FunctionZero.TreeZero --version 2.0.0
NuGet\Install-Package FunctionZero.TreeZero -Version 2.0.0
<PackageReference Include="FunctionZero.TreeZero" Version="2.0.0" />
paket add FunctionZero.TreeZero --version 2.0.0
#r "nuget: FunctionZero.TreeZero, 2.0.0"
// Install FunctionZero.TreeZero as a Cake Addin #addin nuget:?package=FunctionZero.TreeZero&version=2.0.0 // Install FunctionZero.TreeZero as a Cake Tool #tool nuget:?package=FunctionZero.TreeZero&version=2.0.0
FunctionZero.TreeZero
This is a simple library for managing an observable tree hierarchy of nodes.
If you use DataBinding, you can bind a TreeView directly to a Node and it will track changes.
Basic usage
First, specialize a Node like this:
using FunctionZero.TreeZero;
public class MyLovelyNode : Node<MyLovelyNode>
{
// Make it yours ...
}
Or if you want to inject children into the constructor:
using FunctionZero.TreeZero;
public class MyLovelyNode : Node<MyLovelyNode>
{
public MyLovelyNode(ObservableCollection<MyLovelyNode> children, ...) : base(children)
{
}
// Make it yours ...
}
Then it's simply a case of sticking nodes together. You can do that by:
someNode.Children.Add(childNode);
OrchildNode.Parent = parentNode;
- Or by injecting a collection of nodes into a parent node constructor.
ObservableCollection<MyLovelyNode> children = GetSomeChildren();
var someNode = new MyLovelyNode(children)
If a node is already in the tree and you set its Parent property to a different node, the node will be moved to the new parent.
If a node is already in the tree and you add it to the Children of a different node, the node will be moved to the new parent.
If you try any of the following you'll get a suitable exception:
- Set a node parent to itself
- Add a node to its own children
- Move a node into one of its descendants
- Add a node to the children of its current parent
- Inject Children into a node constructor when one or more child nodes are already part of the tree
Note:
Children are ObservableCollections, so you can DataBind a TreeView to a node and it will track changes.
Examples
For the following node:
using FunctionZero.TreeZero;
public class TestNode : Node<TestNode>
{
public TestNode(string name, ObservableCollection<TestNode> children = null) : base(children)
{
Name = name;
}
public Name{ get; }
}
Building a tree by adding to the Children of a node
var root = new TestNode("Root");
var child0 = new TestNode("0");
var child1 = new TestNode("1");
var child2 = new TestNode("2");
root.Children.Add(child0);
root.Children.Add(child1);
root.Children.Add(child2);
Building a tree by setting the Parent property of a node
var root = new TestNode("Root");
var child0 = new TestNode("0");
var child1 = new TestNode("1");
var child2 = new TestNode("2");
child0.Parent = root;
child1.Parent = root;
child2.Parent = root;
Building a tree by injecting a collection of child nodes
ObservableCollection<TestNode> childNodes = new ObservableCollection<TestNode>();
childNodes.Add(new TestNode("0"));
childNodes.Add(new TestNode("1"));
childNodes.Add(new TestNode("2"));
var root = new TestNode("Root", childNodes);
For more examples, take a look at the unit tests on GitHub.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on FunctionZero.TreeZero:
Package | Downloads |
---|---|
FunctionZero.TreeListItemsSourceZero
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.