새 창이 열리면 특정 텍스트 상자에 포커스를두고 텍스트 전체를 선택하려고합니다. 내 그리드에서 이것을 사용하는 요소 포커싱 https://blogs.msdn.microsoft.com/argumentnullexceptionblogpost/2013/04/12/a-simple-selectall-behavior-for-textboxes/TextBox 포커스 및 창 초기화 후 모든 텍스트 선택
: 나는이 튜토리얼의 기초에 그것을 시도
<Grid d:DataContext="{StaticResource DesignTimeLayerViewModel1}" FocusManager.FocusedElement="{Binding ElementName=LayerNameInput}">
을 그리고 상호 작용 행동을 시도 :
<TextBox x:Name="LayerNameInput"
Text="{Binding MapLayerName, UpdateSourceTrigger=PropertyChanged}"
VerticalContentAlignment="Center"
Width="240">
<i:Interaction.Behaviors>
<behaviors:SelectAllTextBoxBehavior></behaviors:SelectAllTextBoxBehavior>
</i:Interaction.Behaviors>
</TextBox>
행동 강령 :
public class SelectAllTextBoxBehavior : Behavior<TextBox>
{
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.GotFocus += this.OnTextBoxGotFocus;
}
protected override void OnDetaching()
{
this.AssociatedObject.GotFocus -= this.OnTextBoxGotFocus;
base.OnDetaching();
}
private void OnTextBoxGotFocus(object sender, RoutedEventArgs e)
{
this.AssociatedObject.SelectAll();
}
}
문제는 bindi ng. 창을 만들 때 문제가 발생하지만 실제로 TextBox에 텍스트가 없습니다. 그런 다음 TextBox가 초기화되고 텍스트가 바인드 된 변수의 값으로 설정되며 선택 항목이 손실됩니다. Tab을 여러 번 사용하여 TextBox의 초점을 다시 잡으면 제대로 작동합니다.
TextBox를 포커스하고 창 만들기시 전체 텍스트를 선택하는 방법은 무엇입니까? 그 뒤에 엄청난 양의 코드가 없다면?
미리 감사드립니다.