2011-11-22 4 views

答えて

2

私は動作を作成し、コントロールがロードされていることを保証するLoadedイベントにフォーカスを設定しました。

using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Controls.Primitives; 
using System.Windows.Input; 
using System.Windows.Interactivity; 

namespace xxx.Behaviors 
{ 
    public class SetControlFocusBehavior : Behavior<Control> 
    { 
     protected override void OnAttached() 
     { 
      base.OnAttached(); 

      if (AssociatedObject is Control) 
      { 
       ((Control)AssociatedObject).Loaded += new RoutedEventHandler(SetControlFocusBehavior_Loaded); 
      } 
     } 

     void SetControlFocusBehavior_Loaded(object sender, RoutedEventArgs e) 
     { 
      var control = sender as Control; 

      if (control == null) 
      { 
       return; 
      } 

      System.Windows.Browser.HtmlPage.Plugin.Focus(); 
      control.Focus(); 
     } 

     protected override void OnDetaching() 
     { 
      base.OnDetaching(); 
      ((Button)AssociatedObject).Loaded -= SetControlFocusBehavior_Loaded; 
     } 
    } 
} 

使用するには、Blendを使用してコントロールにドラッグアンドドロップします。

  <TextBox x:Name="MyTextBox"> 
       <i:Interaction.Behaviors> 
        <sg:SetControlFocusBehavior/> 
       </i:Interaction.Behaviors> 
      </TextBox> 
関連する問題