使用Silverlight 4将焦点设置为XAML中的UIElement(即TextBox)?
问题描述:
我只看到这个问题的代码解决方案。我正在寻找一种基于XAML的解决方案,我很安静,因为您无法专注于XAML中的UI元素。使用Silverlight 4将焦点设置为XAML中的UIElement(即TextBox)?
我发现这个老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不可能?
答
就我所知,不,在XAML中没有办法设置元素的焦点。你必须诉诸于你引用的东西。我认为附加行为(类似于FocusManager
)将是最佳路线。
答
如果您足够努力,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。我会说我很惊讶这种东西不是内置的。
感谢您的确认,我还没有找到一种方法来做到这一点在XAML,所以我不得不诉诸其他手段。 – RyBolt 2011-02-09 15:10:57