2009-04-20 54 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