当前位置: 首页 > news >正文

小程序建站平台哪个好网站备案号 如何添加

小程序建站平台哪个好,网站备案号 如何添加,成都设计公司名字,安卓手机优化大师官方下载WPF DataGrid 如何将被选中行带到视野中目录前言准备工作方法一方法二总结独立观察员 2021 年 12 月 11 日前言在 WPF 开发中#xff0c;显示表格一般使用 DataGrid 控件#xff0c;而且我们一般会依据用户的选中行的操作来执行一些逻辑#xff0c;这种情况#xff0c;选中… WPF DataGrid 如何将被选中行带到视野中目录前言准备工作方法一方法二总结独立观察员 2021 年 12 月 11 日前言在 WPF 开发中显示表格一般使用 DataGrid 控件而且我们一般会依据用户的选中行的操作来执行一些逻辑这种情况选中了哪一行用户是心知肚明的。而还有一种情况我们可能在业务逻辑中由程序自己选中了某一行如果这一行当前不在用户界面的可视区换句话说也就是滚动条没有滚到那个位置那么我们如何将其带到用户的视野中呢准备工作今天准备介绍两个方法。正所谓工欲善其事必先利其器所以在开始之前我们先来构建一个可以模拟后台选中行的功能。使用的还是之前用过的 DataGrid 的 Demo 程序在《WPF DataGrid 通过自定义表头模拟首行固定》和《WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题》中用过加了一个可以填写要选中的行号的文本框以及一个执行选中操作的按钮下面来演示一下没有自动将选中行带到视野中的情况。我们先将数据添加到 10 条然后缩小程序的窗口这样有些数据就在滚动区外面了也就是不在视野中。然后我们通过程序来选中行可以看到选中功能是正常的但是对于视野外的数据用户看不到其是否选中需要手动滚动来寻找如下图动图好那接下来就介绍怎么解决吧。方法一这个方法是参考《【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPF》文章中的将 TreeViewItem树状列表项带到视野中的方法我稍微改造了一下使其同时支持 DataGridRow 和 TreeViewItem并且之后如果有其它受支持的类型也可以方便地扩展。BringIntoViewBehavior 类提供了一个 IsBroughtIntoViewWhenSelected 附加属性给每个列表项的 Selected 事件指定了处理方法处理方法中调用 BringIntoView () 方法完整代码如下using System.Windows; using System.Windows.Controls; /** 源码已托管https://gitee.com/dlgcy/WPFTemplateLib*/ namespace WPFTemplateLib.WpfHelpers {/// summary/// 功能列表项被选中时带到视野中/// 参考http://dlgcy.com/introduction-to-attached-behaviors-in-wpf//// 说明用于 DataGrid 时需要设置 EnableRowVirtualizationFalse/// /summary/// example/// code/// Setter PropertywpfHelpers:BringIntoViewBehavior.IsBroughtIntoViewWhenSelected ValueTrue//// /code/// /examplepublic class BringIntoViewBehavior{#region IsBroughtIntoViewWhenSelectedpublic static bool GetIsBroughtIntoViewWhenSelected(FrameworkElement item){return (bool)item.GetValue(IsBroughtIntoViewWhenSelectedProperty);}public static void SetIsBroughtIntoViewWhenSelected(FrameworkElement item, bool value){item.SetValue(IsBroughtIntoViewWhenSelectedProperty, value);}/// summary/// 是否在选中时带到视野中/// /summarypublic static readonly DependencyProperty IsBroughtIntoViewWhenSelectedProperty DependencyProperty.RegisterAttached(IsBroughtIntoViewWhenSelected,typeof(bool),typeof(BringIntoViewBehavior),new UIPropertyMetadata(false, OnIsBroughtIntoViewWhenSelectedChanged));static void OnIsBroughtIntoViewWhenSelectedChanged(DependencyObject depObj, DependencyPropertyChangedEventArgs e){FrameworkElement item depObj as FrameworkElement;if (item null)return;if (e.NewValue is bool false)return;switch (depObj){case DataGridRow row:{if ((bool)e.NewValue)row.Selected OnItemSelected;elserow.Selected - OnItemSelected;break;}case TreeViewItem treeViewItem:{if ((bool)e.NewValue)treeViewItem.Selected OnItemSelected;elsetreeViewItem.Selected - OnItemSelected;break;}default:break;}}static void OnItemSelected(object sender, RoutedEventArgs e){// 忽略所有只是报告子孙的 Selected 被触发的祖先。if (!ReferenceEquals(sender, e.OriginalSource))return;if (e.OriginalSource is FrameworkElement item)item.BringIntoView();}#endregion} }此方法用于 DataGrid 时需要设置 EnableRowVirtualizationFalse默认为 true使用时只要在行样式中应用这个附加属性即可注意引入命名空间效果如下动图方法二如果开了行虚拟化EnableRowVirtualizationTrue离可视区较远的行的 Selected 事件就不会被触发以上方法就不行了。类似于这个帖子的情况《WPF 开启行虚拟化的时候行选择功能不正常求解决方案》https://bbs.csdn.net/topics/392666509所以如果因为数据量比较大必须开启行虚拟化时可以使用下面的方法。先给 DataGrid 命个名如 x:NameDg 方便后台使用然后在 ViewModel 中添加一个选中项改变事件 SelectedItemChanged并在选中项改变时调用参数为选中行的索引/// summary /// 选中项改变事件 /// /summary public event Actionint SelectedItemChanged;private User _SelectedItem; /// summary /// 选中项 /// /summary public User SelectedItem {get _SelectedItem;set{SetProperty(ref _SelectedItem, value);SelectedItemChanged?.Invoke(Datas.IndexOf(_SelectedItem));} }接着在后台事件中注册事件处理方法处理方法中调用了 DataGrid 的 ScrollIntoView 方法代码如下_vm.SelectedItemChanged OnSelectedItemChanged;/// summary /// 选中项改变事件执行方法 /// /summary /// param nameindex选中行索引/param private void OnSelectedItemChanged(int index) {Dg.ScrollIntoView(Dg.Items.GetItemAt(index)); }效果和方法一的一样就不再赘述了。总结关于将 DataGrid 选中行带到视野中的需求本文介绍了两种方法。方法一提供了一个附加属性可以方便地实现该需求不过要求不能开启行虚拟化。方法二则是需要在 ViewModel 和页面后台编写代码通过事件来触发相关操作不过可以支持行虚拟化。大家可以依据实际情况选择使用如果有更好的方法欢迎交流。 源代码地址https://gitee.com/dlgcy/DLGCY_WPFPractice/tree/Blog20211211 WPFWPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题WPF DataGrid 通过自定义表头模拟首行固定WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPFWPF 使用 Expression Design 画图导出及使用 Path 画图WPF MVVM 弹框之等待框解决 WPF 绑定集合后数据变动界面却不更新的问题使用 ObservableCollectionWPF 消息框 TextBox 绑定新数据时让光标和滚动条跳到最下面真・WPF 按钮拖动和调整大小WPF MVVM 模式下的弹窗WPF 让一组 Button 实现 RadioButton 的当前样式效果WPF 原生绑定和命令功能使用指南WPF 用户控件的自定义依赖属性在 MVVM 模式下的使用备忘在WPF的MVVM模式中使用OCX组件
http://www.yutouwan.com/news/285744/

相关文章:

  • 帝国cms能做手机网站吗石家庄网站排名软件
  • 网站建设中两个月了网站建设比较合理的流程是
  • 免费html转wordpress衡水seo营销
  • 旅游网站建设方案之目标移动app开发技术
  • 免费网站空间怎么杭州鼎易做的网站
  • 网站建设培训赚钱吗wordpress 粉丝
  • 重庆沙坪坝地图全图深圳搜索引擎优化seo
  • 越秀网站建设价格广州响应式网站建设
  • 特色的佛山网站建设网站引导页怎么做
  • 网站推广专业术语asp作业做购物网站代码
  • 盗用别的公司网站模块有什的自学做网站
  • 电商网站订烟管理咨询公司口号
  • 娱乐建设网站上海最新新闻事件今天国内
  • 常州网站建设团队wordpress外链转内链
  • 视频网站如何做微信营销网站开发与建设课程设计
  • 小网站关键词搜什么苏州互联网大厂
  • 怎么做脱机网站建站需求
  • 制作自己网站有什么用外贸获客软件
  • 怎么做网站的优化排名 最新版天堂资源网在线
  • 可以申请免费的个人网站吗织梦网站图片移动
  • 微信公众号怎么做微网站吗企业网站开发实训报告
  • 上海外贸网站设计专业建设外贸网站制作江门
  • 像芥末堆做内容的网站天津免费做网站
  • 怎样创作网站建设银行新版网站上线
  • 营口网站建设开发制作秒收网站
  • 如何申请网站com域名qq网页版在线登录官网
  • 易语言如何建设网站响应式建站网站
  • 商城网站免费模板西班牙语网站建设
  • 鞍山网站制作谁家好互联网站产品开发的流程
  • 太原市建设交易中心网站黄页网