2011-06-17 19 views
3

私はテキストボックス付きのWPF UserControlを持っています。ここではテキストボックスと、それはだ親コントロールが定義されている方法は次のとおりです。フォーカスを設定しても即時編集ができない

FocusManager.FocusedElementセットで
<DockPanel Margin="10,20,10,10" FocusManager.FocusedElement="{Binding ElementName=uxJobNumber}" > 
    <TextBox x:Name="uxJobNumber" Text="{Binding JobNumber, Mode=TwoWay, ValidatesOnDataErrors=True}" TextWrapping="Wrap" FontSize="48" BorderBrush="Black" BorderThickness="1" Margin="10"/> 
    </DockPanel> 

、私はテキストボックス内のカーソルバーの存在を確認することができます。ただし、カーソルバーが点滅していないため、ユーザーはすぐに入力を開始できません。

FocusManager.FocusedElementが設定されていないと、アプリケーションの起動時にテキストボックス内にカーソルバーがまったく表示されません。

ここで完全なXAML私はこの仕事を得るあなたのコードを使用して

<UserControl x:Class="" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:converters="clr-namespace:.Modules.Converters" 
     xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended" 
     xmlns:extToolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended" 
     mc:Ignorable="d"> 
<UserControl.Resources> 
    <converters:VisibilityConverter x:Key="Visibility" /> 
</UserControl.Resources> 
<Canvas Width="1024" Height="768" > 

    <Border Style="{DynamicResource GroupBox}" Canvas.Left="36.261" Canvas.Top="32.131" Width="426.936"> 
     <StackPanel> 
      <Border> 
       <TextBlock Text="STEP 1"/> 
      </Border> 
      <TextBlock Text="Enter the five (5) digit Job Number and click Verify." /> 
      <Path/> 
      <DockPanel Margin="10,20,10,10" FocusManager.FocusedElement="{Binding ElementName=uxJobNumber}" > 
       <Button Content="Verify" Width="125" Height="65" HorizontalAlignment="Right" Command="{Binding SearchJobCommand}" Style="{DynamicResource RedButton}" Margin="0" DockPanel.Dock="Right" IsDefault="True"/> 
       <TextBox Text="{Binding JobNumber, Mode=TwoWay, ValidatesOnDataErrors=True}" TextWrapping="Wrap" FontSize="48" BorderBrush="Black" BorderThickness="1" x:Name="uxJobNumber" Margin="10" KeyboardNavigation.TabIndex="0" /> 
      </DockPanel> 
     </StackPanel> 
    </Border> 
    <TextBlock Text="{Binding Error}" Visibility="{Binding HasError, Converter={StaticResource Visibility}}" Canvas.Left="48" Canvas.Top="288" FontSize="16" Width="403" Foreground="Red" />  
</Canvas> 

+0

これは、MVVMアプリケーションにコードが実質的になく、コードの背後にあることに追加する価値があります。 – NickHeidke

答えて

2

最後に、フォームの読み込みが完了したときに、コードの後ろにFocus()メソッドを使用しました。

private void UserControl_Loaded(object sender, RoutedEventArgs e) 
{ 
    uxJobNumber.Focus(); 
} 
+0

ありがとうございます。私は同じ問題を抱えていて、あなたの答えを読んでこれをデバッグする時間を無駄にすることは決してありませんでした。 MVVMの正統な信者ではなくても、あなたのソリューションは私にとって完璧です。 – Dabblernl

+0

私も同じ問題を抱えていました。アプリケーションでmahappsを使用しています。テキストボックスはTransitioningContentPresenterの内部にあります。多分それがそれに影響しているでしょう。 –

0

です。点滅し、すべて。

+0

質問を編集して、他の人が問題を再現できるようにXAMLドキュメント全体を含めるようにしました。これを見ていただきありがとうございます。 – NickHeidke

関連する問題