フォーカスについて
フォーカスの概要
初期フォーカスのセット
FocusManager.FocusedElementを使用する。
sample.xaml
<Grid FocusManager.FocusedElement="{Binding ElementName=*****}" >
ViewModelからのフォーカスセット
バインドできるプロパティを作成する。
FocusExtension.cs
public static class FocusExtension
{
public static bool GetIsFocused(DependencyObject obj)
{
return (bool) obj.GetValue(IsFocusedProperty);
}
public static void SetIsFocused(DependencyObject obj, bool value)
{
obj.SetValue(IsFocusedProperty, value);
}
public static readonly DependencyProperty IsFocusedProperty =
DependencyProperty.RegisterAttached(
"IsFocused", typeof(bool), typeof(FocusExtension),
new UIPropertyMetadata(false, OnIsFocusedPropertyChanged));
private static void OnIsFocusedPropertyChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
var uie = (UIElement)d;
if ((bool) e.NewValue)
{
uie.Focus();
}
}
}
ViewModel
public bool IsTextBoxFocused
{
get { return _isFocused; }
set
{
this.SetProperty(ref this._isFocused, value);
}
}
View
<TextBox local:FocusExtension.IsFocused="{Binding IsTextBoxFocused}" />
Behaviorでフォーカスセット
FocusBehavior.cs
{
public class FocusBehavior : Behavior<FrameworkElement>
{
/// <summary>
/// フォーカス設定
/// </summary>
public void Focus()
{
this.AssociatedObject.Focus();
}
}
sample.xaml
<CheckBox Content="flg1" HorizontalAlignment="Left" IsChecked="{Binding Flg1}">
<i:Interaction.Behaviors>
<local:FocusBehavior x:Name="forcusTest" />
</i:Interaction.Behaviors>
</CheckBox>
<Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Command="{Binding CalcCommand}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:CallMethodAction TargetObject="{Binding ElementName=forcusTest}" MethodName="Focus" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
Tabキーでの移動
TabIndex プロパティを指定する。
参考URL
Author And Source
この問題について(フォーカスについて), 我々は、より多くの情報をここで見つけました https://qiita.com/kero3/items/282ff29b0ec786ded389著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .