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

时间:2012-08-01 13:21:38

标签: c# wpf xaml

<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();
}

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此代码

<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>

答案 1 :(得分:-1)

您可以使用javascript并在此处使用此代码:

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