Установить фокус на UIElement (т.е. TextBox) в XAML, используя Silverlight 4? - PullRequest
3 голосов
/ 08 февраля 2011

Я видел только код решения этой проблемы.Я ищу решение на основе XAML и очень удивлен, что вы не можете установить фокус на элемент пользовательского интерфейса в XAML.

Я нашел этот старый пост MSDN: http://social.msdn.microsoft.com/Forums/en/wpf/thread/09dc837d-4485-4966-b45b-266727bbb90c

, который имелрешение, которое я искал (это, пожалуй, только WPF)

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

Возможно ли установить фокус на TextBox / ListBox в Silverlight 4 XAML невозможен?

Ответы [ 2 ]

7 голосов
/ 25 октября 2011

В XAML всегда есть выход, если вы достаточно стараетесь. :) Что вам нужно, это Trigger, из 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. Я скажу, что удивлен, что такого рода вещи не встроены.

1 голос
/ 09 февраля 2011

Насколько я знаю, нет, в XAML нет способа установить фокус элемента.Вам придется прибегнуть к чему-то, на что вы ссылались.Я думаю, что прикрепленное поведение (подобное FocusManager) будет лучшим маршрутом.

...