Single-line text input control.

TextInput is what you typically use or subclass when making input fields that only require a single line, like usernames, passwords, numbers, email, search fields, etc. It has no appearance by default, which means it will be invisible until you give it a look or a text value.

If you want a text input control with a default appearance, see TextBox. If you want to accept multiple lines of text, use TextView.

Examples

This example shows a basic TextInput with some style and a button to clear its contents.

<Panel>
    <Button Alignment="CenterRight" Text="Clear" Margin="5">
        <Clicked>
            <Set text.Value="" />
        </Clicked>
    </Button>
    <TextInput ux:Name="text" PlaceholderText="Text field" PlaceholderColor="#ccc" Height="50" Padding="5" >
        <Rectangle Layer="Background">
            <Stroke Width="2" Brush="#BBB" />
        </Rectangle>
    </TextInput>
</Panel>

The following example illustrates how you can subclass TextInput to achieve a consistent look throughout your app.

<!-- Subclassing TextInput -->
<TextInput ux:Class="MyTextInput" FontSize="20" PlaceholderColor="#ccc" Padding="5">
    <Rectangle Layer="Background" CornerRadius="3">
        <Stroke Width="1" Color="#ccc" />
        <SolidColor Color="White" />
    </Rectangle>
</TextInput>

<!-- Example usage -->
<StackPanel Margin="10" ItemSpacing="10">
    <MyTextInput PlaceholderText="Username" />
    <MyTextInput PlaceholderText="Password" IsPassword="true" />
    <MyTextInput PlaceholderText="Repeat password" IsPassword="true" />
    <MyTextInput />
</StackPanel>

This example shows how you can configure the layout and behavior of the on-screen keyboard when the TextInput is in focus using the InputHint, AutoCorrectHint, AutoCapitalizationHint and ActionStyle properties.

<TextInput PlaceholderText="Search..." ActionStyle="Search" AutoCapitalizationHint="None" />
<TextInput PlaceholderText="Email" InputHint="Email" ActionStyle="Send" AutoCorrectHint="Disabled" AutoCapitalizationHint="None" />
<TextInput PlaceholderText="http://" InputHint="URL" ActionStyle="Go" AutoCorrectHint="Disabled" AutoCapitalizationHint="None" />
<TextInput PlaceholderText="+47 123 456 789" InputHint="Phone" />
<TextInput PlaceholderText="1234" InputHint="Number" />
<TextInput PlaceholderText="1.234" InputHint="Decimal" />
<TextInput PlaceholderText="1" InputHint="Integer" />

A common use-case is to have the TextInput raise an event when the user presses the return/search key on their virtual/physical keyboard. The following example demonstrates using ActionTriggered to get an event when this happens:

<StackPanel>
    <JavaScript>
        var Observable = require("FuseJS/Observable");

        var searchStr = Observable("Please enter a query...");
        var entryStr = Observable("");

        function onSearch(args) {
            searchStr.value = "You entered: " + entryStr.value;
        }

        module.exports = {
            searchStr: searchStr,
            onSearch: onSearch,
            entryStr: entryStr
        };
    </JavaScript>
    <Text FontSize="20">Search</Text>
    <TextInput Value="{entryStr}" PlaceholderText="Enter your query...." ActionTriggered="{onSearch}" />
    <Text FontSize="20" Value="{searchStr}" />
</StackPanel>

In some cases, it might be undesirable for the virtual keyboard to disappear when a certain other ux element is pressed. This can be done by passing a parent container to the Focus.Delegate property, causing the focus state to be delegated to the delegate target:

<DockPanel ux:Name="dockpanel" IsFocusable="true" Color="#fff">
    <TextInput Focus.Delegate="dockpanel" />
    <Panel Dock="Right">
        <Text Value="SEND" Alignment="Center" Margin="4,0" Color="#fff" />
        <Rectangle CornerRadius="4" Color="#000" />
    </Panel>
</DockPanel>

Location

Namespace
Fuse.Controls
Package
Fuse.Controls.Primitives 1.8.0-rc2

Interface of TextInput

ActionStyle : TextInputActionStyle ux

Specifies what the returnkey should mean. For exmaple: ActionStyle="Send" will change the return key to a send icon if the platform supports it. ActionStyle="Next" will make the return key focus the next TextInputControl if any. Typically used in forms.

Inherited from TextInputControl

InputHint : TextInputHint ux

InputHint can change what kind of onscreen-keyboard will show on mobile export targets. For example InputHint="Phone" will give a numerical keyboard and InputHint="Email" will give keyboard with @ and no autocorrect

Inherited from LayoutControl

Inherited from Control

Inherited from Element

ActualPosition : float2 uno

The position of the element, the position of its top-left corner to the top-left corner in the parent.

Anchor : Size2 ux

A point within the element to treat as its "epicenter".

Aspect : float ux

The aspect ratio that an element must fulfill in layout.

Offset : Size2 ux

Offets the position of the element after all other layout has been applied.

Inherited from Visual

bringIntoView() js

Requests that this visual be brought into the visible are of the screen. Typically a containing ScrollView will scroll to ensure it is visible.

Children : IList of Node ux

The children of the visual. All nodes placed inside the visual in UX markup are assigned to this list. The order of Visuals this list determines the order of layout. The Z-order of the children is by default equal to this order, but can be manipulated separately using methods like BringToFront and SendToBack.

InvalidateVisual uno

Indicates the visual for this node has changed. This allows the root-level node to know that it must draw, and any caching that it must invalidate the cache for this node.

InvalidateVisualComposition uno

Indicates the composition of the visual has changed, but that the visual drawing itself is still valid (for example a position change).

IsEnabled : bool ux

Whether this node is currently interactable. Disabled visuals do not receive input focus. However, they can still be visible and block hit test for underlaying objects.

IsLocalVisible : bool uno

Returns whether this visual is visible without concern for whether an ancestor visual is hidden or collapsed.

IsVisible : bool uno

Returns whether this visual is currently visible. Will return false if any of the ancestor visuals are hidden or collapsed. This property can not be used to check whether a visual is hidden because it is occluded by another visual, or is outside the view but otherwise visible.

Parameter : string ux

The parameter data for this visual, encoded as JSON, provided by a router if this visual represents a navigation page.

SnapToPixels : bool ux

Whether to snap the result of layout of this visual to physical device pixels.

ZOffset : float ux

Specifies a Z-Offset, visuals with higher values are in front of other visuals.

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

Items (attached by Each) : object ux

The item collection that will be used to populate this visual.

MatchKey (attached by Each) : string ux

Shorthand for setting the MatchKey property on the implicit Each created when using the Items attached property.

Column (attached by Grid) : int ux

The index of the column the element occupies while in a Grid. If not set, the grid will place the element in a cell according to its position in the child list.

Row (attached by Grid) : int ux

The index of the row the element occupies while in a Grid. If not set, the grid will place the element in a cell according to its position in the child list.

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