Allows creating a class that contains several nodes and resources that are added directly to their Parent, as though included directly.

<NodeGroup ux:Class="GridLine">
    <float4 ux:Property="Color"/>
    <string ux:Property="Title"/>
    <string ux:Property="Emoji"/>

    <Rectangle Color="{Property this.Color}"/>
    <Text Value="{Property this.Title}"/>
    <Text Value="{Property this.Emoji}"/>
</NodeGroup>

<Grid Columns="50,1*,auto" DefaultRow="auto">
    <GridLine Color="#AFA" Title="Happy One" Emoji="😀"/>
    <GridLine Color="#FFA" Title="Cry Baby" Emoji="😭"/>
    <GridLine Color="#FAA" Title="Mr. Angry" Emoji="😠"/>
</Grid>

A NodeGroup may be used as a target for Each.TemplateSource or Instance.TemplateSource. This can be used to create classes that position templated items.

<NodeGroup ux:Class="TitleBar">
    <Grid Columns="40,1*,40" Alignment="Top">
        <Panel>
            <Instance TemplateSource="this" TemplateKey="leftOption">
                <MyMenuButton/>
            </Instance>
        </Panel>
        <Panel>
            <Instance TemplateSource="this" TemplateKey="title">
                <Text Value="{Page Title}"/>
            </Instance>
        </Panel>
        <Panel TemplateSource="this" TemplateKey="contextMenu"/>
    </Grid>
</NodeGroup>

<Page>
    <TitleBar>
        <Panel ux:Template="contextMenu">
            <MyShareButton/>
        </Panel>
    </TitleBar>
</Page>

<Page>
    <TitleBar>
        <Panel ux:Template="leftOption"/><!-- leave empty -->
        <Image File="pageTitle.png" ux:Template="title"/>
    </TitleBar>
</Page>

Location

Namespace
Fuse
Package
Fuse.Nodes 1.9.0

Interface of NodeGroup

IsActive : bool ux

When true (the default) the contained nodes and resources will be added to the parent node. When false they will be removed.

Inherited from NodeGroupBase

Nodes : IList of Node ux

Nodes to add to the Parent when this trigger is any non-deactivated state (Progress > 0)

Inherited from Node

ContextParent : Node uno

The context parent is the semantic parent of this node. It is where non-UI structure should be resolved, like looking for the DataContext, a Navigation, or other semantic item.

FindNodeByName(Selector, Predicate<Node> (Node)) : Node uno

Finds the first node with a given name that satisfies the given acceptor. The serach algorithm works as follows: Nodes in the subtree are matched first, then it matches the nodes in the subtrees ofthe ancestor nodes by turn all the way to the root. If no matching node is found, the function returns null.

IsRootingStarted : bool uno

Whether rooting of this node has started. Note that even if this property returns true, rooting may not yet be completed for the node. See also IsRootingCompleted.

Name : Selector ux

Run-time name of the node. This property is automatically set using the ux:Name attribute.

OnRooted uno

If you override OnRooted you must call base.OnRooted() first in your derived class. No other processing should happen first, otherwise you might end up in an undefined state.

Inherited from PropertyObject

Inherited from object

Attached UX Attributes

GlobalKey (attached by Resource) : string ux

The ux:Global attribute creates a global resource that is accessible everywhere in UX markup.

Implemented Interfaces

IScriptObject uno

Interface for objects that can have a script engine representation