2011-02-08 48 views
3

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

回答

1

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

+0

感谢您的确认,我还没有找到一种方法来做到这一点在XAML,所以我不得不诉诸其他手段。 – RyBolt 2011-02-09 15:10:57

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。我会说我很惊讶这种东西不是内置的。

相关问题