首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF ListBox SelectedItem有时不可见(滚动不同步)

您好!您提到的问题是关于WPF ListBox SelectedItem不可见的问题,这可能是由于滚动条同步问题导致的。以下是一些可能的解决方案:

  1. 首先,您可以尝试使用以下代码来同步滚动条和选定项目:
代码语言:csharp
复制
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    ListBox listBox = sender as ListBox;
    if (listBox != null && listBox.SelectedItem != null)
    {
        listBox.ScrollIntoView(listBox.SelectedItem);
    }
}
  1. 如果上述方法不起作用,您可以尝试使用以下代码来禁用滚动条同步:
代码语言:csharp
复制
<ListBox ScrollViewer.CanContentScroll="False">
  1. 如果您希望在选定项目时自动滚动到视图中,您可以使用以下代码:
代码语言:csharp
复制
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    ListBox listBox = sender as ListBox;
    if (listBox != null && listBox.SelectedItem != null)
    {
        listBox.UpdateLayout();
        listBox.ScrollIntoView(listBox.SelectedItem);
    }
}

希望这些解决方案能够帮助您解决问题!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WPF面试题-来自ChatGPT的解答

WPF中,Visibility.Collapsed和Visibility.Hidden是用于控制界面元素可见性的枚举值。...常见的容器控件包括GroupBox(分组框)、TabControl(选项卡控件)、Expander(可展开控件)、ScrollViewer(滚动视图控件)等。...View应该尽量保持简单,只关注界面的展示和用户交互,涉及具体的业务逻辑。...性能:如果你的数据集合很大,ListView可能更适合,因为它支持虚拟化,只会在需要时加载和显示可见的项,而ListBox会一次性加载所有项。 数据绑定是将数据源与控件关联的过程。...在WPF中,SelectedItem、SelectedValue和SelectedValuePath是用于处理选择控件(如ComboBox、ListBox等)中选定项的属性和路径。

38730
  • 《深入浅出WPF》学习笔记之深入浅出话Binding

    6.3.2 控制Bangding的方向及数据更新   有时候数据只需要展示给用户、不允许用户修改,这时候可以把Binding模式更改为从源向目标的单向沟通 (源→目标:OneWay) Mode:属性Mode...或写 xmlns:sys="clr-namespace:System;assembly=mscorlib" ...this.listBoxStudents.DisplayMemberPath = "Name"; //为TextBox设置Binding   Binding binding = new Binding("SelectedItem.Id...以Slider为源,TextBox为目标   当TextBox输入超出范围时,边框会显示为红色   Binding默认只校验Target->Source,校验Source->Target的数据,如果想校验需要设置...6.5 MultiBinding(多路Binding)   有时UI显示的信息由不止一个数据来源决定,这时就需要使用MultiBinding ?

    5.5K10

    《深入浅出WPF》——模板学习

    可见设计模式层次之高,程序员在实现之前一定要多整理代码的结构) “形而下者谓之器”指的是我们能观察到的时间万物都是物质本质内容的表现形式,“本质与表现”或者说“内容与形式”是哲学范畴内的一对矛盾统一体...界面元素间的沟通依靠路由事件来完成,有时候路由事件和附加事件也会加入到数据的传输中。让我们思考一个问题:WPF作为Windows程序的表示方式,它究竟在表示什么?...、每个单元格只显示一个属性;放在ListBox有时为了避免单调可以在最左端显示64*64的头像,再将其他属性分两行排列在后面;如果是单独显示一个学生的则可以用类似简历的复杂格式来展现学生的全部数据。...这种方法对WPF最大的曲解在于没有借助Binding实现数据驱动界面,并且认为ListBox.Items属性里放置的是控件——这种曲解迫使数据在界面元素间交换并且程序员只能使用事件驱动方式来实现逻辑——...WPF之前,我们只能重写控件比较底层的方法和属性(这也是以前想要使用一些高级特性,动不动就要改底层代码,使得这种技能的门槛很高),而现在我们只需要调整ListBox的ItemsPanel属性,请看下面代码

    4.8K10

    WPF 属性变动后的业务处理及恢复原始值的方法

    1、首先,其实不太推荐在属性的 set 中放置业务代码,尤其是本来是自动属性的,因为需要处理些业务方面的东西就改为传统属性,多少有点优雅。...2、直接在 set 块中进行处理的另外原因可能是,如果那样的话业务逻辑就比较分散了,不利于维护,容易出 Bug。反观我上面使用的方式,业务代码都在一起,非常利于维护。...nameof(defaultObject.UserName): { ToastToScreenCmd.Execute($"用户名设置成功:{SelectedItem.UserName...nameof(defaultObject.Age): { //模拟还原属性原始值; if (SelectedItem.Age...(使用 ObservableCollection)WPF 消息框 TextBox 绑定新数据时让光标和滚动条跳到最下面真・WPF 按钮拖动和调整大小WPF MVVM 模式下的弹窗WPF 让一组 Button

    3.3K50

    C#学习笔记—— 常用控件说明及其属性、事件

    另外当自动滚动打开时,窗体的工作区自动滚动,以使具有输入焦点的控件可见。 (18)BackColor属性:用来获取或设置窗体的背景色。...可见随着窗体的大小变化, Label控件也会随着变 。 而 变 的 则 是Archor中所规定的边 缘与相应的父控件边缘的距离。 (4)BackColor属性: 用来获取或设置控件的背景色。...当使用多列模式时,可以使控件得以显示更多可见项,如图9-19 所示。 (3)ColumnWidth 属性:用来获取或设置多列 ListBox控件中列的宽度。...该属性用来获取一个集合,该集合包含 ListBox 控件中所有选定项的从零开始的索引。 (7)SelectedItem属性:获取或设置ListBox中的当前选定项。...(2)FullOpen 属性:用来获取或设置一个值,该值指示用于创建自定义颜色的控件在对话框打开时是否可见。值为true时可见,值为 false时不可见

    9.7K20

    OEA 中 WPF 树型表格虚拟化设计方案

    我们得先看看如何在 WPF 中实现虚拟化。...WPF 虚拟化相关知识     我之前写过一篇文章《精通 WPF UI Virtualization》,里面引用了许多老外的文章,说明了要实现界面虚拟化需要做的几件事。...那么,在这样层次要求下,要如何实现只使用一个滚动条的虚拟化呢?还好,WPF 自带的 DataGrid 也带有行列虚拟化的功能,我们可以先看一下 DataGrid 是如何实现的。...这导致了当每一行的高统一时,竖向滚动条会计算出错,造成很差的用户体验。...这也是为什么 ListBox 等控件在分组状态下,虚拟化会被关闭的原因:分组后每一项其实是 GroupItem 类型,而每个组的高度并不一致。

    2.7K70

    win10 uwp 如何判断一个控件在滚动条的里面是用户可见

    昨天星期八再娶你 大佬问我如何判断在滚动条内可以看到某个元素,他需要在滚动条里面放一个视频播放器,在用户看不到这个播放器的时候自动停下这个播放器 在 UWP 的判断会比在 WPF 中复杂一些,我写过WPF...如何判断一个控件在滚动条的里面是用户可见但是在 UWP 中的小伙伴,也就是做 UWP 的大佬对 API 的设计会更加诡异 在 UWP 没有 ScrollChanged 事件只有ScrollViewer.ViewChanged...事件,但是这个事件和 WPF 的触发不相同的在于,如果我有外层的控件修改了滚动条的大小,不会触发这个事件。...,所以通过这个事件判断控件是否在滚动可见是不可靠的 昨天星期八再娶你 大佬告诉我一个可以使用的方法是通过LayoutUpdated 事件拿到触发,在布局属性修改的时候、在窗口修改的时候在运行时的布局的时候都会触发这个事件...的 TranslatePoint 方法相同 判断滚动可见大小不能从方法的参数拿到,需要直接拿滚动条控件,这样会存在一个坑在于时机的问题,和 WPF 不相同,此时的事件很难做到精确拿到滚动条的当前的大小和移动距离

    92520

    DataBind数据核心

    asp:ListItem> 组件技术 你现在选择的是:<%# DDL.SelectedItem.Text...JSP技术 PHP技术 组件技术 你现在选择的是:JSP技术区 我们看到,那个红色的[JSP技术],我们并没有使用什么控件,但是他却能正确的显示我们的选择结果,这个是就捆绑的结果,注意<%# DDL.SelectedItem.Text...接收Bind的控件,一般有DropDownList,DataList,DataGrid,ListBox这些集合性质的控件,而被捆绑的主要是ArrayList(数组),Hashtable(哈稀表),DataView...我们在使用DataBind,获得的数据,系统会将其默认为String(字符串),这对我们平时的输出显示提供了极大的方便,但是我们并不是每次都需要string类型,有时我们就需要Boolean,Int32...DataView,不是DataTable,这是一个常犯的错误:) 本文由来源 21aspnet,由 system_mush 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,代表

    65420

    windows编程学习笔记(三)ListBox的使用方法

    ListBox是Windows中的一种控件,一般被当做子窗口使用,Windows中所有子窗口都是通过发送一个通知码到父窗口父窗口通过WM_COMMAND消息接收,并在此消息中处理,并控制子窗口,ListBox...自然也例外,ListBox中有它独有的消息,通知消息,风格,查看MSDN可以看到风格主要有: LBS_EXTENDEDSEL  用户可以通过SHIFT + 鼠标或者其他组合键进行多选(只能通过SHIFT...,这个索引也会发生改变 LB_INITSTORAGE 需要加入大量列表项时使用 LB_INSERTSTRING 添加列表项,但是与LB_ADDSTRING不同的是,加入后新字符串参加排序 LB_RESETCONTENT...找到后将该项设置为选中状态 LB_SELITEMRANGE  在多选模式下,将某一区域内一个或多个项设置为选中状态 LB_SETCARETINDEX 在多选模式下,设置给定索引值的矩形设置为焦点矩形,如果该值没有显示,那么滚动条将会自动滚动到相应行...LB_SETLOCALE 设置列表框的当前区域 LB_SETSEL 在多选模式下选中某一字符串 LB_SETTABSTOPS 设置TAB键停止的位置 LB_SETTOPINDEX 设置列表框中的某一项处于可见位置

    3.5K20
    领券