0
Silverlight 4でコントロールにフォーカスを当てる際に問題が発生しました。最大の問題は、コントロールがフォーカスをレンダリングしないと保証されない場合です。Silverlightをある程度の信頼性を持ってコントロールにフォーカスするように設定していますか?
Silverlight 4でコントロールにフォーカスを当てる際に問題が発生しました。最大の問題は、コントロールがフォーカスをレンダリングしないと保証されない場合です。Silverlightをある程度の信頼性を持ってコントロールにフォーカスするように設定していますか?
私は動作を作成し、コントロールがロードされていることを保証する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>