【问题标题】:Setting Focus on new Items in Items Control在项目控制中设置对新项目的关注
【发布时间】:2010-10-20 15:54:47
【问题描述】:

我有一个 ListBox,它通过数据绑定将新项目添加到其中(即,列表中添加了一些内容,并且框正在更新以包含新项目)。

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

我查看了this question 并打算看看它是否能让我有所收获,但这并不是对我问题的直接回应。

【问题讨论】:

    标签: wpf data-binding listbox


    【解决方案1】:

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

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

    这将确保在添加项目时将焦点赋予新项目,然后焦点管理器(查看该线程中的第一个响应)应将焦点赋予文本框。 MSDN 文章提供了一个有用的示例,在此处放入模板:

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

    【讨论】:

    • 由于数据模板中存在 UserControl 需要处理焦点事件并将其传递给我想要的实际文本框,我的问题实际上变得更加复杂,但这里的设置让我很远足以弄清楚,谢谢。
    • 你可能会发布你的代码,以防其他人来寻找类似的东西。
    猜你喜欢
    • 2018-04-15
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 2011-01-20
    • 2019-03-03
    • 1970-01-01
    相关资源
    最近更新 更多