2015-01-05 5 views
0

В моем приложении WPF у меня есть много текстовых полей на одной странице. Я хочу сосредоточиться на первом текстовом поле. Я искал его и пробовал разные решения.WPF - установить фокус на текстовое поле

XAML Код:

<StackPanel Width="350" HorizontalAlignment="Left" > 
    <TextBlock x:Name="CustNamelbl" Text="C U S T O M E R N A M E" 
       Style="{StaticResource LightBoldTxtblkStyle }"/> 
    <Grid Height="35"> 
     <TextBox x:Name="CustName" Style="{StaticResource Txtbox}" 
        LostFocus="CustName_LostFocus_1" TabIndex="1" 
        CommandManager.PreviewExecuted="CustName_PreviewExecuted" 
        ContextMenu="{x:Null}" PreviewTextInput="CustName_PreviewTextInput" 
        Margin="0,0,0,0" GotFocus="CustName_GotFocus"/> 
     <Rectangle Fill="White" Height="2" Opacity="0.2" 
        VerticalAlignment="Bottom"></Rectangle> 
    </Grid> 
</StackPanel> 

C# Код:

CustName.Focus(); 
Keyboard.Focus(CustName); 

Используя этот код я получаю Focus на этом TextBox. Я также могу открыть системную клавиатуру. Однако я ничего не могу напечатать в этом TextBox. Кроме того, этот сфокусированный курсор не является мигающим курсором, а просто устойчивым курсором.

+2

Попробуйте установить фокус на загруженном обработчик событий. Я предполагаю, что вы устанавливаете фокус в конструкторе. Подробнее читайте здесь: [Обзор фонового ввода WPF] (http://msdn.microsoft.com/en-us/library/aa969768%28v=vs.110%29.aspx) – Reniuz

+0

Я думаю, что проблема заключается в 'CustName_GotFocus '. Попробуйте удалить этот метод из 'xaml' пока и посмотрите, поможет ли это. – XAMlMAX

ответ

2

Дайте TextBox имя, а затем вы можете вызвать в окне-Tag

FocusManager.FocusedElement="{Binding ElementName=YOURTBNAME}" 
+0

Очень хороший чистый xaml, не знал, что мы могли бы сделать это таким образом. – XAMlMAX

Смежные вопросы