使用Silverlight 4将焦点设置为XAML中的UIElement(即TextBox)?

时间:2011-02-08 17:26:43

标签: xaml silverlight-4.0 uielement

我只看到过这个问题的代码解决方案。我正在寻找一个基于XAML的解决方案,我很安静,你不能把注意力集中在XAML中的UI元素上。

我发现了这个旧的MSDN帖子:http://social.msdn.microsoft.com/Forums/en/wpf/thread/09dc837d-4485-4966-b45b-266727bbb90c

有我寻求的解决方案(我猜这只是WPF)

<Grid FocusManager.FocusedElement="{Binding ElementName=listBox1}">

将焦点设置为 Silverlight 4 XAML中的TextBox / ListBox不可能吗?

2 个答案:

答案 0 :(得分:7)

如果你足够努力,XAML总有办法。 :)您需要的是来自Blend SDK的Trigger

public class FocusTrigger : TargetedTriggerAction<Control>
{
   protected override void Invoke(object parameter)
   {
      if (Target == null)
         return;

      Target.Focus();
   }
}

然后使用它:

<Button Content="Move focus">
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
      <local:FocusTrigger TargetName="TheTextBox"/>
    </i:EventTrigger>
  </i:Interaction.Triggers>
</Button>
<TextBox x:Name="TheTextBox"/>

如果你想获得真正的幻想,你可以apply a condition to your trigger并在XAML中做各种疯狂的事情。我会说我很惊讶这种东西不是内置的。

答案 1 :(得分:1)

据我所知,不,XAML中没有办法设置元素的焦点。你必须诉诸你所引用的东西。我认为附加行为(类似于FocusManager)将是最佳途径。