如何使用 xaml 代码将光标聚焦在 wpf 中的文本框上

本文关键字:wpf 文本 聚焦 xaml 何使用 代码 光标 | 更新日期: 2024-09-17 04:14:16

<Grid x:Name="LayoutRoot">
    <Button x:Name="btn_A" Content="A" HorizontalAlignment="Left" Height="36" Margin="194,160,0,0" VerticalAlignment="Top" Width="70" Click="Button_Click" />
    <TextBox  x:Name="txt_focus"  HorizontalAlignment="Left" Height="34.5" Margin="177,98,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="97" TextChanged="TextBox_TextChanged" />
</Grid>

下面的 C# 代码

public partial class focus : Window
{
    public focus()
    {
        this.InitializeComponent();         
    }
    private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
    {           
        txt_focus.Focus();
    }
    private void Button_Click(object sender, RoutedEventArgs e)
    {          
        txt_focus.Text += btn_A.Content.ToString();
    }
    private void txt_focus_GotFocus(object sender, RoutedEventArgs e)
    {
        int count = txt_focus.Text.Length;
        txt_focus.CaretIndex = count;
    }
}

上面的代码运行良好。但我需要的是,我必须在 xaml 中实现以下代码

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{           
    txt_focus.Focus();
}

如何使用 xaml 代码将光标聚焦在 wpf 中的文本框上

你可以试试这段代码

<StackPanel Orientation="Vertical"
            FocusManager.FocusedElement="{Binding ElementName=txt_focus}">
    <TextBox x:Name="txt_focus" 
             HorizontalAlignment="Left"
             Height="34.5"
             Margin="167.5,139,0,0"
             TextWrapping="Wrap"
             VerticalAlignment="Top"
             Width="97"
             TextChanged="TextBox_TextChanged" />
</StackPanel>

你可以在这里使用 javascript 并使用以下代码:

if(isset($_REQUEST['sub_con_page'])) 
{ 
//correct 
} 
else  
{ ?> 
<script type="text/javascript"> 
$(document).ready(function() { 
  $("#txt_focus").focus(); 
}); 
</script> 
<?php } ?>