使用Silverlight 4在XAML中将焦点设置为UIElement(即文本框)?

使用Silverlight 4在XAML中将焦点设置为UIElement(即文本框)?,xaml,silverlight-4.0,uielement,Xaml,Silverlight 4.0,Uielement,我只见过这个问题的代码解决方案。我正在寻找一个基于XAML的解决方案,我很惊讶你不能在XAML中设置UI元素的焦点 我发现了这篇旧的MSDN帖子: 这就是我寻求的解决方案(我想这只是WPF) 在Silverlight 4 XAML中是否无法将焦点设置为文本框/列表框?据我所知,没有,XAML中没有设置元素焦点的方法。你必须求助于你提到过的东西。我认为附加行为(类似于FocusManager)将是最好的方法。如果您足够努力,XAML中总会有一种方法。:)您需要的是Blend SDK中的触发器

我只见过这个问题的代码解决方案。我正在寻找一个基于XAML的解决方案,我很惊讶你不能在XAML中设置UI元素的焦点

我发现了这篇旧的MSDN帖子:

这就是我寻求的解决方案(我想这只是WPF)



在Silverlight 4 XAML中是否无法将焦点设置为文本框/列表框?

据我所知,没有,XAML中没有设置元素焦点的方法。你必须求助于你提到过的东西。我认为附加行为(类似于
FocusManager
)将是最好的方法。

如果您足够努力,XAML中总会有一种方法。:)您需要的是Blend SDK中的
触发器

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

      Target.Focus();
   }
}
public类FocusTrigger:targetedtriggeration
{
受保护的覆盖无效调用(对象参数)
{
if(Target==null)
返回;
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"/>


如果你想变得非常花哨,你可以用XAML做各种疯狂的事情。我会说我很惊讶这种东西没有内置。

感谢您的确认,我还没有找到在XAML中实现这一点的方法,所以我不得不求助于其他方法。
<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"/>