WPF ListView MVVM模式下数据增加自动滚动到底部

这篇具有很好参考价值的文章主要介绍了WPF ListView MVVM模式下数据增加自动滚动到底部。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ListView 设置SelectedIndex属性不会滚动界面,只能通过ScrollIntoView方法设置,所以使用触发器检测
SelectedIndex ,使用扩展属性定义SelectedIndex的行为

引入dll

手动引入 System.Windows.Interactivity Microsoft.Expression.Interactions
xmal中添加声明文章来源地址https://www.toymoban.com/news/detail-625512.html

  xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
  xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

定义扩展属性行为

    public static class ScrollToSelectedBehavior
    {
        public static readonly DependencyProperty SelectedValueProperty = DependencyProperty.RegisterAttached(
            "SelectedValue",
            typeof(object),
            typeof(ScrollToSelectedBehavior),
            new PropertyMetadata(null, OnSelectedValueChange));

        public static void SetSelectedValue(DependencyObject source, object value)
        {
            source.SetValue(SelectedValueProperty, value);
        }

        public static object GetSelectedValue(DependencyObject source)
        {
            return (object)source.GetValue(SelectedValueProperty);
        }

        private static void OnSelectedValueChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var listbox = d as ListBox;
            listbox.ScrollIntoView(e.NewValue);
        }
    }

定义数据触发器

  <i:Interaction.Triggers>
                <ei:DataTrigger Binding="{Binding Items.Count, ElementName=list}" Comparison="NotEqual" Value="0">
                    <ei:ChangePropertyAction TargetName="list" PropertyName="SelectedIndex"    Value="{Binding ElementName=list, Path=Items.Count}">
                    </ei:ChangePropertyAction>
                </ei:DataTrigger>
</i:Interaction.Triggers>

测试

<Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
        xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
        xmlns:local="clr-namespace:WpfApplication1"
        Title="Window1" Height="300" Width="400">
    <StackPanel Orientation="Vertical">
        <ListView Height="200" ItemsSource="{Binding Itmes}" x:Name="list"  local:ScrollToSelectedBehavior.SelectedValue="{Binding ElementName=list, Path=SelectedValue}" >
            <i:Interaction.Triggers>
                <ei:DataTrigger Binding="{Binding Items.Count, ElementName=list}" Comparison="NotEqual" Value="0">
                    <ei:ChangePropertyAction TargetName="list" PropertyName="SelectedIndex"    Value="{Binding ElementName=list, Path=Items.Count}">
                    </ei:ChangePropertyAction>
                </ei:DataTrigger>
            </i:Interaction.Triggers>
        </ListView>
        <Button Width="75" Height="30" Click="Button_Click"> 新增</Button>
    </StackPanel>
</Window>

到了这里,关于WPF ListView MVVM模式下数据增加自动滚动到底部的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF入门教程系列二十九 ——DataGrid使用示例MVVM模式(7)

    WPF入门教程系列目录 WPF入门教程系列二——Application介绍 WPF入门教程系列三——Application介绍(续) WPF入门教程系列四——Dispatcher介绍 WPF入门教程系列五——Window 介绍 WPF入门教程系列十一——依赖属性(一) WPF入门教程系列十五——WPF中的数据绑定(一)   接上文 WPF入门教程

    2024年02月10日
    浏览(46)
  • WPF入门教程系列二十八 ——DataGrid使用示例MVVM模式(6)

    WPF入门教程系列目录 WPF入门教程系列二——Application介绍 WPF入门教程系列三——Application介绍(续) WPF入门教程系列四——Dispatcher介绍 WPF入门教程系列五——Window 介绍 WPF入门教程系列十一——依赖属性(一) WPF入门教程系列十五——WPF中的数据绑定(一)       7.上面Buttom的

    2024年02月09日
    浏览(39)
  • WPF入门教程系列二十八 ——DataGrid使用示例MVVM模式(5)

    WPF入门教程系列目录 WPF入门教程系列二——Application介绍 WPF入门教程系列三——Application介绍(续) WPF入门教程系列四——Dispatcher介绍 WPF入门教程系列五——Window 介绍 WPF入门教程系列十一——依赖属性(一) WPF入门教程系列十五——WPF中的数据绑定(一)           通过上面

    2024年02月08日
    浏览(35)
  • WPF入门教程系列二十七 ——DataGrid使用示例MVVM模式(4)

    WPF入门教程系列目录 WPF入门教程系列二——Application介绍 WPF入门教程系列三——Application介绍(续) WPF入门教程系列四——Dispatcher介绍 WPF入门教程系列五——Window 介绍 WPF入门教程系列十一——依赖属性(一) WPF入门教程系列十五——WPF中的数据绑定(一)       计算机界的顶

    2024年02月07日
    浏览(40)
  • 【JS】设置滚动属性默认自动滚动到底部(overflow:scroll;)

    设置滚动属性默认自动滚动到底部: 场景:实现对话框,默认展示最新的对话内容 react 实现: 所需用到的css样式

    2024年02月07日
    浏览(42)
  • WPF绑定数据,增删改后实时更新TreeView/ListView

    WPF的界面的确好看,也引入了很多新功能,和winform相比更先进更强大......那么狗儿蛋,代价是什么? 代价就是WPF学起来比较费力。 数据绑定是WPF的特色之一,可以省去写代码更新UI界面的工作。这次打算做一个管理数据的小软件,自然的我也打算在界面上弄个TreeView,然后把

    2024年02月09日
    浏览(54)
  • WPF【二】基于MVVM模式,通过点击按钮(RadioButton)实现主页面显示不同的UserControl

    效果图 一、UI界面的按钮绑定对应的命令【Command】以及命令参数【CommandParameter】 二、 UI【代码】通过内容去绑定需要显示的UserControl页 三、 编写对应的ViewModel.cs文件实现对应的功能,注意:代码中SecondWindow以及FirstPageView两个类是需要用户鼠标右键点击添加【新建项目】选

    2024年02月05日
    浏览(49)
  • 【自动化】在WPF应用程序中使用MVVM框架实现Modbus协议通信

    Modbus是一种广泛应用于工业领域的通信协议,主要用于设备间的数据交换。在WPF应用程序中,我们可以使用MVVM(Model-View-ViewModel)框架来实现Modbus协议的通信。本文将详细介绍如何实现这一功能。 为了在WPF应用程序中实现Modbus协议通信,我们需要安装一些第三方库。可以使用

    2024年03月22日
    浏览(48)
  • vue3 h5进入页面后自动滚动到底部

    背景: 在做h5项目中的聊天页面时,需求是进入页面自动滚到底部,方便用户看到最新消息(因为消息是正序排列的,最新消息自然展示在底部)。  直接上代码: 主要代码:

    2024年02月16日
    浏览(40)
  • WPF入门到跪下 第九章 MVVM-基本数据处理

    MVVM是Model-View-ViewModel的缩写。mvvm是一种设计思想。Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI展现出来,ViewModel是一个同步View和Model的对象。 在MVVM架构下,View和Model之间没有直接的联系,它们通过Vie

    2024年01月21日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包