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

发布于 2024-10-16 14:28:13 字数 511 浏览 3 评论 0原文

我只看到过这个问题的代码解决方案。我正在寻找基于 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 不可能吗?

I have only seen code solutions to this problem. I am looking for a XAML based solution and I am quiet surprised you can't set focus on a UI element in XAML.

I found this old MSDN post: http://social.msdn.microsoft.com/Forums/en/wpf/thread/09dc837d-4485-4966-b45b-266727bbb90c

that had the solution I sought ( this is WPF only I guess )

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

Is setting focus to a TextBox/ListBox in Silverlight 4 XAML not possible ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傻比既视感 2024-10-23 14:28:13

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

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"/>

如果您想要真正花哨,您可以 将条件应用于触发器并在 XAML 中执行各种疯狂的操作。我想说的是,我很惊讶这种东西没有内置。

There is always a way in XAML, if you try hard enough. :) What you need is a Trigger, from the Blend SDK.

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

      Target.Focus();
   }
}

Then to use it something like:

<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"/>

If you want to get REALLY fancy, you can apply a condition to your trigger and do all sorts of crazy things in XAML. I will say I am surprised this sort of thing isn't built in though.

茶底世界 2024-10-23 14:28:13

据我所知,不,XAML 中没有办法设置元素的焦点。您将不得不求助于您所引用的东西。我认为附加行为(类似于 FocusManager)将是最好的路线。

As far as I know, no, there is not a way in XAML to set the focus of an element. You'll have to resort to something like you've referenced. I think an attached behavior (similar to the FocusManager) would be the best route.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文