【问题标题】:Focus on first element in listbox关注列表框中的第一个元素
【发布时间】:2017-01-09 16:27:45
【问题描述】:

我面临以下问题。当我从具有键盘焦点的列表框中删除第一个元素时(通过刷新项目源),键盘焦点正在移动到父窗口。我想将键盘焦点保留在第一个列表框项上。所以我想出了以下代码

<Grid.Resources>
<Style TargetType="{x:Type ListBox}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding FirstRowDeleted}" Value="True">
            <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=MyListBox}" />
        </DataTrigger>
    </Style.Triggers>
</Style>

使用此代码,我可以将焦点移到列表框本身。如何将焦点移到第一个列表框项? MyListBox[0] 似乎不起作用。有什么建议吗?

谢谢你 卡迪

【问题讨论】:

  • MyListBox.Items[0] 呢?
  • Value="{Binding ElementName=FavoriteResultListBox.Items[0]}" 或 Value="{Binding FavoriteResultListBox.Items[0]}" 不起作用
  • 我的错,试试Value="{Binding Path=Items[0], ElementName=FavoriteResultListBox}"
  • 即使这不起作用
  • 列表框的真正名称是什么?你不断改变你的故事。请显示足够多的 XAML,以便我现在可以看到您的问题中的列表框和样式。

标签: c# wpf mvvm


【解决方案1】:

我在这里找到了答案:How do you programmatically set focus to the SelectedItem in a WPF ListBox that already has focus?

var listBoxItem = (ListBoxItem) MainListBox
    .ItemContainerGenerator
    .ContainerFromItem(MainListBox.SelectedItem);
listBoxItem.Focus();

感谢@Jeff 的回答。

【讨论】:

    【解决方案2】:

    此代码在页面加载时将焦点功能应用于第一个输入文本。试试看

    $(document).ready(function () {
    
                    $("#input:text:visible:first").focus();
    
    
                });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2013-10-29
      相关资源
      最近更新 更多