将焦点设置在xaml中的按钮上并自动显示文本框中的类型光标

时间:2014-12-29 13:31:49

标签: c# xaml events cursor focus

你好我现在有一个xaml表单弹出一些文本,一个文本框和一个名为confirm的按钮。

有没有办法可以让光标已经显示在文本框中,以便用户可以立即开始输入并专注于按钮,这样当他们按下回车键时,它就会运行按钮on_Click处理程序。

我的xaml代码如下所示:文本框和按钮:

<TextBox x:Name="SessionName"  Grid.Row="4" FontFamily="Calibri" FontSize="14"  IsTabStop="True" TabIndex="1" MaxLines="2" AcceptsTab="True" AcceptsReturn="False" BorderThickness="1" Height="30" Width="300" HorizontalAlignment="Center" Margin="0,5,10,5" ForceCursor="True" >
            <TextBox.ContextMenu>
                <ContextMenu/>
            </TextBox.ContextMenu>
        </TextBox>

<Button x:Name="startAppButton" Content="Start" Grid.Row="5" Height="25" Width="150" Click="StartAppButton_Click" HorizontalAlignment="Center" />

对于我的.cs文件,代码如下:

public class Class
{
    public WelcomePage()
    {
        InitializeComponent();

        /*disables window modification.*/
        this.WindowStyle = WindowStyle.None;
    }

    public static string sessionName { set; get; }

    private void StartAppButton_Click(object sender, RoutedEventArgs e)
    {
         if (SessionName.Text.ToString().Equals(""))
         {
             System.Windows.MessageBox.Show("Please give your session a name", "Error",    
             MessageBoxButton.OK, MessageBoxImage.Error);
         }
         else
         {
             sessionName = SessionName.Text.ToString();
             Calibration.Degree_Choice dc = new Calibration.Degree_Choice();
             this.Hide();
             dc.ShowDialog();
             this.Close();
         }
    } 

}   

如果有可能的话,我们将非常感谢。

Ĵ

1 个答案:

答案 0 :(得分:0)

您无法同时将焦点设置为两个控件,但是您可以将该按钮标记为表单的“默认按钮”(通过设置IsDefault),并且它将接受返回,而不管焦点。还有一种方法可以指定在开始时关注哪个控件(FocusManager.FocusedElement)。

尝试这样的事情:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="75.705" Width="277.037"
    FocusManager.FocusedElement="{Binding ElementName=textBox1}">
<DockPanel>
    <Button IsDefault="True" Click="Button_Click" Content="OK" DockPanel.Dock="Right" Width="50"/>
    <TextBox Name="textBox1"/>        
</DockPanel>