FocusBehavior Class
Focuses a UI control without code-behind.
Namespace: DevExpress.Mvvm.UI
Assembly: DevExpress.Xpf.Core.v21.2.dll
NuGet Package: DevExpress.Wpf.Core
Declaration
Remarks
Focus a Control Once it is Loaded
In the following code sample, the FocusBehavior focuses a TextBox control when the control is loaded:
<UserControl ...
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
<Grid>
<TextBox>
<dxmvvm:Interaction.Behaviors>
<dxmvvm:FocusBehavior/>
</dxmvvm:Interaction.Behaviors>
</TextBox>
</Grid>
</UserControl>
Focus a Control When an Event is Raised
- Set the SourceObject property (or SourceName) to specify an object that raises the event you want to track.
- Specify an object’s event in the EventName property.
The following code sample focuses the TextBox control when a user clicks a Button:
<UserControl ...
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
<StackPanel>
<TextBox Text="This control is focused on button click ">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:FocusBehavior SourceName="btn" EventName="Click"/>
</dxmvvm:Interaction.Behaviors>
</TextBox>
<Button x:Name="btn" Content="Click to focus the TextBox"/>
</StackPanel>
</UserControl>
Focus a Control When a Property Value is Changed
- Set the SourceObject property (or SourceName) to specify an object.
- Set PropertyName property to the object’s property you want to track.
The following code sample focuses the TextBox control when the ViewModel’s IsDataLoaded property value is changed:
<UserControl ...
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:ViewModels="clr-namespace:DXApplication1.ViewModels">
<UserControl.DataContext>
<ViewModels:MainViewModel/>
</UserControl.DataContext>
<Grid>
<TextBox Text="This control is focused when data is loaded">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:FocusBehavior SourceObject="{Binding ViewModel}" PropertyName="IsDataLoaded"/>
</dxmvvm:Interaction.Behaviors>
</TextBox>
</Grid>
</UserControl>
Add a Focus Delay
Regardless of what triggers the FocusBehavior, you can specify a FocusDelay:
<UserControl ...
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
<StackPanel>
<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>
<Button x:Name="btn" Content="Click to focus the TextBox"/>
</StackPanel>
</UserControl>
Inheritance
Object
DispatcherObject
DependencyObject
Freezable
Animatable
DevExpress.Mvvm.UI.Interactivity.AttachableObjectBase
DevExpress.Mvvm.UI.Interactivity.Behavior
DevExpress.Mvvm.UI.Interactivity.TriggerBase
DevExpress.Mvvm.UI.Interactivity.TriggerBase<Control>
See Also