FocusBehavior

  • 2 minutes to read

FocusBehavior allows you to set the focus to a UI control without utilizing code-behind.

Focus On Startup

To set the focus when an associated control is loaded, define the FocusBehavior for the control as follows.

<TextBox Text="This control is focused on startup">
    <dxmvvm:Interaction.Behaviors>
        <dxmvvm:FocusBehavior/>
    </dxmvvm:Interaction.Behaviors>
</TextBox>

Focus On an Event or Property Change

To focus a control when an event occurs, specify the EventName property.

<TextBox Text="This control is focused on button click: ">
    <dxmvvm:Interaction.Behaviors>
        <dxmvvm:FocusBehavior SourceName="button" EventName="Click"/>
    </dxmvvm:Interaction.Behaviors>
</TextBox>
<Button x:Name="button" Content="Click to focus the TextBox"/>

If it is necessary to make a UI control focused when a specific property is changed, specify the FocusBehavior.PropertyName property.

<TextBox Text="This control is focused when data is loaded">
    <dxmvvm:Interaction.Behaviors>
        <dxmvvm:FocusBehavior SourceObject="{Binding ViewModel}" PropertyName="IsDataLoaded"/>
    </dxmvvm:Interaction.Behaviors>
</TextBox>

The SourceObject and SourceName properties specify an object used for processing an event or property change. The SourceObject can be set through binding. The SourceName is the name of a UI element.

Focus With a Delay

If the associated control shouldn't be focused immediately once it's loaded or the event specified in the EventName property occurs, specify the required delay using the FocusBehavior.FocusDelay property.

<TextBox Text="This control is focused with a delay">
    <dxmvvm:Interaction.Behaviors>
        <dxmvvm:FocusBehavior SourceName="btn"  EventName="Click" FocusDelay="0:00:01"/>
    </dxmvvm:Interaction.Behaviors>
</TextBox>

Example

NOTE

A complete sample project is available at https://github.com/DevExpress-Examples/how-to-use-focusbehavior-t122987.

using DevExpress.Mvvm;
using DevExpress.Mvvm.DataAnnotations;

namespace Example.ViewModel {
    [POCOViewModel]
    public class MainViewModel {
    }
}