WPF列表框滚动到底部

2023-12-25

我使用 ObservableCollection 作为 listBox 组件的 ItemSource:

但控件的行为对我来说并不合适。我已经向下滚动到这件事在我的收藏中第一次出现,但不是最后一次。

示例列表为:1,1,2,3,4,5,6,7,8,9,11,22,33,1

当您输入最后 1 个时,您的组件会向上滚动到第一个 1:)。这不是我等待的。

请指教。这是组件的代码:

public class MyListBox : ListBox
{
    protected override void OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        base.OnItemsChanged(e);
        if (Items.Count > 0)
        {
            var item = Items[Items.Count - 1];
            UpdateLayout();
            ScrollIntoView(item);
            UpdateLayout();
        }
    }

}

抱歉,它需要是一个类,因为 List 或 OC 才能真正进行值比较。因此,您需要使相同的值具有唯一性。我对此进行了测试并且有效。

     <StackPanel Orientation="Vertical" >
        <ListBox x:Name="lbStringList" ItemsSource="{Binding Path=UniqueStringList}" DisplayMemberPath="Str" Height="60" VerticalAlignment="Top"/>
        <Button Click="Button_Click" Content="56" />
     </StackPanel>


    private List<UniqueString> uniqueStringList = new List<UniqueString>() 
            {                   
                new UniqueString("zero",0),
                new UniqueString("one",1),
                new UniqueString("two",2),
                new UniqueString("three",3),
                new UniqueString("four",4),
                new UniqueString("five",5),
                new UniqueString("six",6),
                new UniqueString("seven",7),
                new UniqueString("zero",8)
            }; 

    public MainWindow()
    {
        InitializeComponent();

    }
    public List<string> StringList { get { return new List<string>() { "one", "two", "three", "four", "five", "one" }; } }
    public List<UniqueString> UniqueStringList 
    { 
        get 
        {
            return uniqueStringList;
        } 
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        System.Diagnostics.Debug.WriteLine(sender.GetHashCode());
        lbStringList.ScrollIntoView(lbStringList.Items[8]);

    }
    public class UniqueString
    {
        private Int32 id;
        public string Str { get; private set; }
        public override bool Equals(object obj)
        {
            UniqueString item = (UniqueString)obj;
            return item.id == id;
        }
        public override int GetHashCode()
        {
            return id;
        }

        public UniqueString(string str, Int32 _id) { Str = str; id = _id; }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF列表框滚动到底部 的相关文章

  • 如何防止 Safari 滚动溢出:隐藏的 iframe?

    使用 Safari 您可以通过设置 style overflow hide 来禁用大多数 iframe 滚动 在 iframe 上 但是 如果您单击 iframe 并移动鼠标 内容无论如何都会滚动 Example 滚动内容 html
  • 如何创建一个没有边框且只能通过手柄调整大小的 WPF 窗口?

    如果你设置ResizeMode CanResizeWithGrip 在 WPF 上Window然后右下角会出现一个调整大小的夹点 如下 如果你设置WindowStyle None 标题栏也会消失 但灰色斜边仍然保留 直到您设置ResizeM
  • WPF TextBox:如何将默认绑定模式更改为 OneWay?

    最初 我有以下代码
  • 如何像谷歌日历一样将单元格的内容滚动到表格视图中的另一个单元格中?

    我希望用户界面像谷歌日历那样进入桌面视图 它在不同的行中显示相同的日期事件 但是当您向上或向下滚动时 左侧的日期也会向上向下滚动 Can you please help me how to achieve this Please take
  • 树视图上下文菜单命令未触发

    我有一个绑定到某些属性类型的 Observable 集合的树视图 有一个 HierarchicalDataTemplate 在树视图中显示数据 现在我需要显示每个 HierarchicalDataTemplate 项目的特定上下文菜单 我使
  • 如何将绑定字符串格式设置到所有 DataGridTextColumn 控件?

    这是我的 DataGridTextColumn 控件之一 如下所示
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 如何更改 TextBox.Text 而不丢失 WPF 中的绑定?

    在 WPF 应用程序中 我正在创建一个设置窗口来自定义键盘快捷键 在文本框中 我处理 KeyDown 事件并将 Key 事件转换为人类可读的形式 以及我想要获取数据的形式 文本框声明如下
  • WPF 模式进度窗口

    如果这个问题已经被回答了很多次 我很抱歉 但我似乎找不到适合我的答案 我想创建一个模式窗口 在我的应用程序执行长时间运行的任务时显示各种进度消息 这些任务在单独的线程上运行 我能够在过程的不同阶段更新进度窗口上的文本 跨线程通信一切正常 问
  • WPF 中处理系统关闭

    如何在 WPF 中重写 WndProc 当我的窗口关闭时 我尝试检查我正在使用的文件是否被修改 如果是 我必须提示用户 你想保存更改吗 消息 然后关闭正在使用的文件和窗口 但是 当我的窗口仍然打开时 我无法处理用户重新启动 关闭 注销的情况
  • WPF 中列表框的数据验证

    我有一个 ListBox 绑定到类型 T 的 ObservableCollection 每个 ListBoxItem 都是一个复选框 IsChecked 绑定到 T 中的 bool 属性 我想验证 ListBox 中的选中项 以便至少必须选
  • wpf 中带有复选框通用控件的多选组合框

    我想创建控件 允许用户使用复选框从下拉列表中选择多个选项 我在 Google 上进行了搜索 得到了一些链接 例如 http code msdn microsoft com windowsapps Multi Select ComboBox
  • 增加 WPF 弹出动画的持续时间

    我有一个 WPF PopUp 控件 用于显示菜单叠加层 并且使用默认的淡入淡出动画 不过我想让动画需要更长的时间才能完成 我可以在 XAML 中做到这一点吗 你能在这里发布相关的xaml代码吗 否则 您可以查看这些链接以开始使用 xaml
  • 如何将 WPF 窗口置于前面?

    我创建了一个单实例应用程序 并且希望在用户多次启动该应用程序时激活已打开的窗口 这工作正常 但我有一个问题 如果已经打开的窗口超出了另一个应用程序窗口 我必须将其放在前面 我尝试过 window Focus 和 window Show 但它
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将
  • 在哪里可以找到 WPF 应用程序中 UI 的一些主题/演示?

    我想使用 xaml 中的 Visual Studio Designer 设计一个现代外观的 UI 它为我提供了一个很好的工具箱 我可以使用它通过拖放来直观地创建 UI 由于它几乎表现得像 HTML 我想知道它是否也有丰富的主题库 我找到了一
  • 设置双指缩放时精确的滚动位置

    我正在创建一个地图应用程序 它将标记图像放置在画布上并滚动到它 我正在使用浏览器的捏缩放和滚动来放大 缩小地图 然而 我注意到有一些奇怪的行为 我想知道如何解决它 这有点难以解释 但我们开始吧 假设您处于网页的标准缩放级别 无法进一步缩小

随机推荐

  • 我们可以通过hiredis将C int数组设置为Redis中的键值吗?

    给定 int x 3 11 22 33 如何将其保存为键的值作为二进制数据并获取它 hiredis 给出了如何设置二进制安全字符串的示例 Set a key using binary safe API reply redisCommand
  • 无法在InitializeGL和paintGL之外调用OpenGL相关函数

    正如标题所示 在 Qt 内部 我无法使用或调用 QGLWidget 函数之外的任何 OpenGL 函数 例如initializeGL and paintGL 我正在尝试构建一个 3D 模型 在我的插槽之后QMainWindow类被称为 一切
  • JPA:设置参数后,如何获取/打印(类型化)查询后面的 JPQL 查询字符串?

    如何获取 打印 类型化 查询后面的 JPQL 查询字符串 即after参数已设置 例如用于调试目的 一个简单的toString 似乎没有做到这一点 Thanks 不存在 最终被转换为最终 SQL 的最终 JPQL 这样的事情 JPA 实现如
  • AWS RDS 的间歇性 SQL 连接问题

    目前 我们的 ASP NET 网站 基于 Sitecore 构建 遇到间歇性问题 该网站看似随机的 15 分钟内无法连接到 SQL Server 15 分钟后 问题自行解决 网站恢复正常 错误信息是 Exception System Dat
  • SAS proc sql返回group by/order by变量的重复值

    我有一些相当简单的 SQL 应该为每个资产每季度提供 1 行 相反 我每组得到多行 下面是 SQL SAS 数据步骤和一些输出数据 重复行数 在下面的数据中为 227708 等于 Num borrowers 即 asset1 的行数 pro
  • 为什么标签的高度比其内容大?

    我创建了一个小片段来说明问题 我有一个svg里面的图标 i 标签 这是我的图标的基本块 放置在我的页面的各个位置 为了这个示例 我将其放置在一个简单的 div 容器中 如果您检查下面示例的结果 您会发现 i 标签的高度为33px not 3
  • 在 PHP 中,函数是二进制安全的意味着什么?

    In PHP函数是什么意思binary safe 它们有何特别之处 它们通常用在什么地方 这意味着当您向函数传递任意二进制数据 即包含非 ASCII 字节和 或空字节的字符串 时 该函数将正常工作 例如 非二进制安全函数可能基于需要空终止字
  • 在 MongoDB 中执行 JavaScript 文件

    我想知道如何在 MongoDB 中执行 JavaScript 文件 这是我的 JS 文件中的一段简单代码 function loadNames print name 从命令提示符我尝试像这样执行文件 mongo test js 但它显示错误
  • 如何限制Go中实现的HTTP服务器的连接数?

    我正在尝试在 Golang 中实现 HTTP 服务器 我的问题是 我必须将任何特定时间的最大活动连接数限制为 20 您可以使用netutil LimitListener https godoc org golang org x net ne
  • jQuery 滑块作为时间线

    我刚刚完成了 jQuery 手风琴与 jQuery 滑块的合并 IE 显示 3 张图片 用户可以使用PREV or NEXT按钮可查看下一张 上一张 3 张图像 他们还可以使用滑块浏览所有图像 下一步是使这个滑块看起来像时间线 左侧需要从
  • 我应该使用哪个(对于基于 python 的网站)? sass、compass、switchcss...替代品? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 组织 CSS 的最佳系统是什么 我正在制作几个使用 python 作为后端脚本的网站 我有兴趣使用一些东西来帮助我组织长 css 脚本 我
  • 使用 Jackson 反序列化包装列表

    我有一个像这样的 JSON 对象 geonames countryId 2017370 adminCode1 73 countryId 2027370 adminCode1 71 我怎样才能反序列化这个对象DIRECTLY to List
  • 如何在 Spring 应用程序上下文中将 Class 设置为属性值?

    有没有办法配置 spring 应用程序上下文 以便它将使用 Class 类型的值初始化 setter 我需要初始化该结构 Map
  • 将 RTSP 流转换为虚拟网络摄像头

    我正在尝试使用来自 IP 摄像机的 RTSP 流作为 Windows 上各种应用程序 例如 Skype Zoom Microsoft Teams 等 的视频输入源 到目前为止我找到的唯一解决方案是使用 webcam 7 http www w
  • std::weak_ptr:锁或shared_ptr构造函数?

    似乎有两种方法可以暂时获取 a 所指向的资源的所有权weak ptr Use lock 通过weak ptr to a shared ptr构造函数 这两者都会产生一个shared ptr 锁返回一个nullptr在这种情况下weak pt
  • 动态设置线性布局背景

    我想通过以下方式动态设置线性布局背景 通过 XML 解析从 Web url 获取图像 然后将该图像存储到 SD 卡中 现在图像已保存到 SD 卡中 将该图像设置为应用程序中的线性布局背景 现在我陷入了第三步 有人可以帮忙吗 用这个 Bitm
  • 在Thread中使用EnterCriticalSection更新VCL标签

    我是线程新手 我正在使用一个第三方库 该库使用线程 有时会调用我提供的过程 当线程调用我的过程时 如何更新 TLabel Caption 如果我在其他地方调用了InitializeCriticalSection 它是否像 EnterCrit
  • 光源设置不正确

    我有这段代码 但灯光似乎无法正常工作 当我渲染对象时它很暗 然后当我旋转它时 光源似乎也旋转了 我不知道问题出在哪里 我尝试修改灯光模型但仍然不起作用 这是程序 while glfwWindowShouldClose window Rend
  • Javascript递归设置超时

    我刚刚开始研究 javascript 所以希望这会是简单的事情 我想制作自动播放的图像幻灯片 这非常简单 并且有一些关于它的教程 但由于某种原因我无法让它工作 这就是我所拥有的 var image1 new Image var image2
  • WPF列表框滚动到底部

    我使用 ObservableCollection 作为 listBox 组件的 ItemSource 但控件的行为对我来说并不合适 我已经向下滚动到这件事在我的收藏中第一次出现 但不是最后一次 示例列表为 1 1 2 3 4 5 6 7 8