首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >聚焦wpf列表框而不更改所选项目

聚焦wpf列表框而不更改所选项目
EN

Stack Overflow用户
提问于 2012-07-18 23:22:31
回答 1查看 3.1K关注 0票数 3

DataTemplate中的列表框

代码语言:javascript
运行
复制
        <ListBox 
                ItemsSource="{Binding Path=(Duties:IPicker.Choices)}"
                   SelectedValue="{Binding Path=(Duties:IPicker.Selection), 
                   ValidatesOnDataErrors=True, 
                   UpdateSourceTrigger=PropertyChanged, 
                   NotifyOnValidationError=True}">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel MaxWidth="{DynamicResource ListWidth}" />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
        </ListBox>

只有在加载用户控件时不移动焦点的情况下,SelectedValue绑定才能完全工作

当我导航回到控件(使用棱镜导航)时,我希望将焦点放在用户控件中的第一个元素上,该控件恰好是列表框。

但是,当我添加以下行,然后每次我向后导航时,选择被重置为第一个项目,显示为蓝色突出显示-选择不会停留在之前选择的项目。

代码语言:javascript
运行
复制
Loaded += (sender, e) => 
        control.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));

没有这一行,除了列表框没有键盘焦点(之前选择的列表框项目的灰色高亮显示而不是蓝色高亮显示)之外,一切都可以正常工作。

此外,只有当我在向前导航之前将焦点放在另一个列表框上时才会发生问题,即有两个列表框,如果我在向前导航之前停留在第一个列表框上,那么即使使用movefocus也能保留正确的选择?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-21 02:30:40

尝试将焦点设置在已加载事件的列表框的选定项上,如下所示-

代码语言:javascript
运行
复制
Loaded += ((sender, e) =>
{
   ListBoxItem item = myListbox.ItemContainerGenerator.ContainerFromItem(myListbox.SelectedItem) as ListBoxItem;
   item.Focus();
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11544798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档