2009-04-20 28 views
5

我有一个ListBox,通过Databinding将新项目添加到列表框中(即某些东西正在添加到列表中,并且该框正在更新以包含新项目)。设置项目控件中新项目的焦点

列表框中的项目是可编辑的数据模板,所以问题是:如何在添加新项目时将焦点设置为模板中的第一个字段?

我已经看过this question,我会去看看它是否能让我得到任何地方,但这不是对我的问题的直接回应。

回答

7

您链接到的问题应该适用于您的特定情况。只要您正在使用您的源一个ObservableCollection,您可以设置:

<ListBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding MyCollection}" ItemTemplate="{StaticResource MyTemplate}/> 

这将确保在添加的项目,重点是考虑到随后新项目的焦点管理(看看的在该线程中的第一个响应)应该将焦点放在TextBox上。 MSDN文章提供了一个有用的例子,放入模板的位置:

<DataTemplate x:Key="MyTemplate" DataType="{x:Type Classes:MyClass}">  
    <StackPanel FocusManager.FocusedElement="{Binding ElementName=firstButton}"> 
    <Button Name="firstButton" /> 
    </StackPanel> 
</DataTemplate> 
+0

我的问题实际上是由于一个用户控件中,需要处理的焦点事件,并将它传递给实际的文本数据模板的存在变得更为复杂我想要的盒子,但这里的设置让我足够了解,谢谢。 – 2009-04-21 04:33:50