wpf 客户端【JDAgent桌面助手】开发详解(三) 瀑布流效果实现与UI虚拟化优化大数据显示

目录区域:

业余开发的wpf 客户端终于完工了。。晒晒截图

wpf 客户端【JDAgent桌面助手】开发详解-开篇

wpf 客户端【JDAgent桌面助手】详解(一)主窗口 圆形菜单。。。

wpf 客户端【JDAgent桌面助手】开发详解(二)桌面宠物制作详解



因为前段时候有很多的事情 比较忙,自从上次写完博客之后很久没有更新了。

用WPF制作的京东桌面助手。这个作品是参加比赛的,自己花费了很多心思和时间在里面,最终的作品效果和比赛的结果还是令人满意的。

作品感觉不说很fashion,也足够细致了。比赛最终没有得到京东宙斯杯的一等奖(一等奖让拍拍网出来创业的一家公司拿去了),得了个第二名。这样也不错了。

毕竟参数人员很多,很多都是以公司为团队参加的,奖金也比较丰厚,房贷压力可以减轻一点了

--------------------------------------------------------------------------------------------------------------------------------------

最近受一位上海朋友邀请到上海创业,工资、期权、生活问题老板都安排的妥妥的,来这边已经1个月了,感觉都还挺靠谱的,公司现在正在飞速发展中,期望有想换工作的C# 或者WPF 程序员来聊聊。下面简单介绍下公司情况:

1.地理位置:上海 徐汇区 上海师范大学附近奥。。。美女萌萌哒很多。

2.硬件设施:PC 都是1920 高清大屏幕+迷你静音机箱+微软无线键鼠套装。有ps4、xbox360、50寸电视。办公楼有食堂:10元一次(2荤2素+1个水果或者果汁或者酸奶) 周边生活方便。公司冰箱有加多宝和无糖可乐等饮料和食品

3.公司情况:

A.产品第一版本已经发布,正在进行第二版本开发过程中,需求大量开发人员,快到碗里来吧萌萌哒们。

B.不必担心稳定性亲,已经有收到投资了,稳定性你放心,不稳定我也不从北京放弃很多来这边的。现在账面资金持续个2年以上绝对没问题(话说不到2年,指不定你就跳槽          跑路了。。嘿嘿),二期融资即将开始。

C.工资水平:工作4年多了,还是比较了解一线城市开发人员的薪资水平的,只要你靠谱,肯定是比市场平均水平高的。放心给你少了你干的不开森,不开森写不出好代码咋办        额。

D.技术水平:萌萌哒们。。。这个你放心还是比较前沿的morden、fashion的。。。我们写的代码追求代码质量、用户体验,不追求速度。这是个优雅的团体,不是土包子、码农。

E.项目情况:C++服务端 ; C# WPF客户端;业务方向是客厅娱乐,具体内容您来了咋细聊额;

3.团队氛围:没的说额。。。时不时聚餐,老板请吃饭。同事都很萌萌哒。。。

最后有意向的朋友是请发送简历到老板 [email protected]期待你的来信....面试时间我们可以不需要工作日,毕竟各位程序员工资都很高,平均1天工资的几百块吧。。。我们很有诚意等你。。周一到周五 晚上您说时间。。。周六周末全天等您。。。我们如饥似渴额。。。

------------------------------------------------------------------------------------------------------------------------------------------------

闲话不说了。。。上次还差几个点没有写从今天开始继续写:

开发详解(三) 瀑布流效果实现与UI虚拟化优化大数据显示 !

我们在做web开发时候,比如新浪微博、腾讯QQ空间、还有很多fashion 的图片和购物网站都有瀑布流效果。用户体验很好,也很美观。在PC客户端怎么做呢。

那wpf里面怎么做到呢。

这里分几种情况来讲:

1.低级的方法:

做瀑布流这种效果时候,不做性能上的特殊处理。

只做数据绑定和监控滚动条是否到最后一个item来自动加载下一页数据。

基本思路是:第一次加载前1页数据,代码监视滚动条的位置是否已经到达最后一个item了,如果已经到达了就开一个线程访问服务读取第二页数据加载。

void SrcScroll_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
        if ((e.ExtentHeight - e.VerticalOffset) <= 100 + SearchListBox.ActualHeight )
        {
            //do load
        }
}

这样一直循环往复。缺点是当到达第1000页的时候,整个UI界面上的item数量可能就是PageSize*1000.假如PageSize是30个吧,那就是3万个item。整个时候

拖动滚动条会发现十分卡顿。

2.初级的方法:

上面方法讲到了界面item增多后界面会卡顿,解决方式怎么办呢。

wpf 的开发人员已经考虑到了这个问题,VirtualizingPanel 这个类就是为了解决这个问题。VirtualizingStackPanel

用法很简单例如:

<ComboBox Name="lstFast" Grid.Row="1" Grid.Column="1" Margin="5">
            <ComboBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel></VirtualizingStackPanel>
                </ItemsPanelTemplate>
            </ComboBox.ItemsPanel>
</ComboBox>

或者

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Horizontal"></VirtualizingStackPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBoxItem>item 1</ListBoxItem>
    <ListBoxItem>item 2</ListBoxItem>
    <ListBoxItem>item 3</ListBoxItem>
</ListBox>

或者类似这种风格

<Grid>
<ScrollViewer>
<VirtualizingStackPanel IsItemsHost="True"  />
</ScrollViewer>
</Grid>

具体应用中出现的问题这就不细说了,各位可以百度。

注:这里只介绍了UI虚拟化的方法,后台的数据Model 其实也是需要虚拟化的,这里篇幅原因先暂时不写了。

3.灵活运用的方法

当我们用内置的VirtualizingStackPanel做应用效果时候,会发现一个问题。

就是VirtualizingStackPanel 缺点就是 item 只能横向展示 或者竖向展示。如下图

                                 

那我要实现WrapPanel效果怎么办呢?

没有提供,那就只有自己继承 VirtualizingPanel,实现自定义虚拟容器。

在codeproject.com 上面也有些国外人写的开源的VirtualizingWrapPanel 可以借鉴参考。

时间: 2024-08-08 08:25:49

wpf 客户端【JDAgent桌面助手】开发详解(三) 瀑布流效果实现与UI虚拟化优化大数据显示的相关文章

Android WebView 开发详解(三)

转载请注明出处   http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao 概览 Android WebView提供展示网页,也提供我们应用程序对网页加载的一些定制,比如我们为了减少网络数据可以设置当前加载的页面不能显示图片,如果是pc网址在pad上访问我们可以提供用户一种概览模式的浏览方式,可以提供放大网页字体等定制功能.Android 提供管理WebView的一些setting的类WebSe

Xamarin+Prism开发详解三:Visual studio 2017 RC初体验

Visual studio 2017 RC出来一段时间了,最近有时间就想安装试试,随带分享一下安装使用体验. 1,卸载visual studio 2015 虽然可以同时安装visual studio 2015和2017,考虑个人电脑性能加空间有限还是先卸载一个吧.要想完全卸载visual studio2015,得下载微软团队开源得一个简单工具才行,开源项目地址https://github.com/Microsoft/VisualStudioUninstaller,工具下载地址TotalUnins

在【Xamarin+Prism开发详解三:Visual studio 2017 RC初体验】中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很是感兴趣。于是发时间深入研究了一下Visual Studio 2017RC 是不是和微软Connect()://2016上说得一样神。

总共列出了12点,耐心点慢慢看! 1,添加了不少[代码样式]的设置项目. 通过合理的设置每个人都能写出优美的代码,而且团队项目也可以达到统一代码风格. this首选项:可以设置[字段,属性,方法,事件]的this是否需要,错误列表会列出[建议,警告,错误]等信息. 预定义的类型首选项:Int32还是int等类似设置. Var首选项:内置类型时是Var定义还是类型定义等设置. Object属性初始化:C#7.0特性,对象声明和属性设置同时实现多方便. 方法内部初始化变量:C#7.0特性,这样就不用

Android网页浏览器开发详解(一)

Android网页浏览器开发详解(一) 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android 网页浏览器开发器开发详解(一),主要通过WebView类实现载入网页,刷新网页,向前载入历史网页,向后载入历史网页和缩放网页等五个功能. Android 网页浏览器开发器开发详解(二),主要实现书签和历史记录的保存,删除,编辑等功能. Android 网页浏览器开发器开发详解(三),主要通过As

基于H5的微信支付开发详解

这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可供参考,有的朋友直接看文档就可以自己实现此支付接口的开发了. 一.前言 为何我还写一篇微信支付接口的博文呢?第一,我们必须知道,所谓的工作经验很多都是靠总结出来的,你只有总结了更多知识,积累了更多经验,你才能在该行业中脱颖而出,我个人觉得如今的招聘,很多都需要工作经验(1年.3年.5年....),其

****基于H5的微信支付开发详解[转]

这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可供参考,有的朋友直接看文档就可以自己实现此支付接口的开发了. 一.前言 为何我还写一篇微信支付接口的博文呢?第一,我们必须知道,所谓的工作经验很多都是靠总结出来的,你只有总结了更多知识,积累了更多经验,你才能在该行业中脱颖而出,我个人觉得如今的招聘,很多都需要工作经验(1年.3年.5年....),其

家政服务预约app平台开发详解

家政服务预约app平台开发详解:151-1222-4001(微/电)家政服务系统开发,家政服务软件开发,家政服务在线预约平台,家政服务O2O平台,家政服务平台开发,家政服务app开发,家政服务程序开发,家政服务定位系统,家政服务公众号开发,家政服务抢单派单模式. 传统找家政人员的方式是在牛皮癣广告上乱找.中介翻本子给客户推荐,或是通过网上搜索.熟人口口相传.除了难找到合适的家政人员外,没有安全保障也是很多人怕选择家政服务的一大原因.现在通过手机APP找家政员,除了服务质量更能得到保障外,通过担保

Android WebView 开发详解

Android WebView 开发详解 1.概览: Android WebView 做为承载网页的载体控件,他在网页显示的过程中会产生一些事件,并回调给我们的应用程序,以便我们在网页加载过程中做应用程序想处理的事情.比如说客户端需要显示网页加载的进度.网页加载发生错误等等事件. WebView提供两个事件回调类给应用层,分别为WebViewClient,WebChromeClient开发者可以继承这两个类,接手相应事件处理.WebViewClient 主要提供网页加载各个阶段的通知,比如网页开

JavaScript基础与案例开发详解pdf

下载地址:网盘下载 <Java Script基础与案例开发详解>根据JavaScript在各种类型的应用开发中(如B2B.B2C.C2C)的使用情况,有针对性地安排了丰富的案例,从基本的表格操作.表单操作,到构建浏览器端的富文本编辑器,再到实现像Windows那样的复杂UI的操作,每一个案例都能让读者从中学习到主流的JavaScript开发技巧. 针对初学者,<Java Script基础与案例开发详解>也讲解了JavaScript的基本语法,所以即使没有任何编程语言基础,读者也能够