CaseStudy(showcase)数据篇-Loading的制作

简介: 做silvelight也有一段时间了,相册、游戏,刚刚完成的showcase这个小程序算是一个阶段了。这里就以showcase这个项目来做一下CaseStudy。 数据篇-Loading的制作 silverlight自带了一个loading。

做silvelight也有一段时间了,相册、游戏,刚刚完成的showcase这个小程序算是一个阶段了。这里就以showcase这个项目来做一下CaseStudy。

数据篇-Loading的制作

silverlight自带了一个loading。但是由于界面的需求可能需要定制化一下。这里我的思路是做两个sl文件用其中一个去加载另外一个。也就是说有两个xap文件一个是主要的也就是你做的silverlight程序文件,另一个小的是用来做loading的。

参考文章: 技巧:在Silverlight中如何访问外部xap文件中UserControl

 

public   partial   class  Page : UserControl
    {
        
public  Page()
        {
            InitializeComponent();
            App.Current.Host.Content.Resized 
+=   new  EventHandler(Content_Resized);
            App.Current.Host.Content.FullScreenChanged 
+=   new  EventHandler(Content_FullScreenChanged);

            
this .Init();
        }

        
private   void  Init()
        {
            Uri address 
=   new  Uri(HtmlPage.Document.DocumentUri,  " ClientBin/showcase.xap " );
            WebClient webClient 
=   new  WebClient();
            webClient.OpenReadCompleted 
+=   new  OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
            webClient.DownloadProgressChanged 
+=   new  DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
            webClient.OpenReadAsync(address);

        }

        
void  webClient_DownloadProgressChanged( object  sender, DownloadProgressChangedEventArgs e)
        {
            
// 在这里实现你的loading动画
             double  per  =  Convert.ToDouble(e.ProgressPercentage)  /  Convert.ToDouble( 100 );
            loadBar.Height 
=  (App.Current.Host.Content.ActualHeight  -   16 *  per;
        }

        
void  webClient_OpenReadCompleted( object  sender, OpenReadCompletedEventArgs e)
        {
            Assembly assembly 
=  LoadAssemblyFromXap(e.Result,  " showcase.dll " );
            UIElement element 
=  assembly.CreateInstance( " showcase.Page " as  UIElement;
            
this .LayoutRoot.Children.Clear();
            
this .LayoutRoot.Children.Add(element);
        }

        Assembly LoadAssemblyFromXap(Stream packageStream, String assemblyName)
        {
            Stream stream 
=  Application.GetResourceStream(
                    
new  StreamResourceInfo(packageStream,  null ),
                    
new  Uri( " AppManifest.xaml " , UriKind.Relative)).Stream;

            String appManifestString 
=   new  StreamReader(stream).ReadToEnd();

            Deployment deployment 
=  (Deployment)XamlReader.Load(appManifestString);

            Assembly assembly 
=   null ;
            
foreach  (AssemblyPart assemblyPart  in  deployment.Parts)
            {
                
if  (assemblyPart.Source  ==  assemblyName)
                {
                    String source 
=  assemblyPart.Source;

                    StreamResourceInfo streamInfo 
=  Application.GetResourceStream(
                        
new  StreamResourceInfo(packageStream,
                        
" application/binary " ),
                        
new  Uri(source, UriKind.Relative));

                    assembly 
=  assemblyPart.Load(streamInfo.Stream);
                    
break ;
                }
            }
            
return  assembly;
        }


        
void  Content_FullScreenChanged( object  sender, EventArgs e)
        {
            
this .ResizeFrame();
        }

        
void  Content_Resized( object  sender, EventArgs e)
        {
            
this .ResizeFrame();
        }

        
void  ResizeFrame()
        {
            (
this   as  UserControl).Width  =  App.Current.Host.Content.ActualWidth;
            (
this   as  UserControl).Height  =  App.Current.Host.Content.ActualHeight;
        }

        
void  FullScreenMode()
        {
            App.Current.Host.Content.IsFullScreen 
=   ! App.Current.Host.Content.IsFullScreen;

        }
    }

 


作者:nasa
出处:nasa.cnblogs.com
联系:nasa_wz@hotmail.com
QQ:12446006

相关文章
|
6月前
|
开发者
小而美的IKUN-UI组件库源码学习(按钮 Button)
小而美的IKUN-UI组件库源码学习(按钮 Button)
37 0
|
JavaScript 前端开发 关系型数据库
7 种最棒的 Vue Loading 加载动画组件测评与推荐 - 穷尽市面上所有加载动画效果(Vue loader)类型 - 卡拉云
Vue Loading 加载动画组件 (Vue-loader) 看起来很简单不重要,实际上它是保证用户留存的关键一环。选择好 Loading 加载动画,用户留存率翻倍。本文介绍 7 种不同的加载动画 UI 效果(Vue loader),每一种都有其对应的使用场景。举例,旋转加载动画适合短时间加载,旋转加载还能更细分,比如在按钮上的旋转加载,适合提交数据的极短时间,旋转动画在全局的适合多表格数据加载,旋转动画图片可自定义的适合高度定制化的 APP / 网站等。再举例,进度条类的加载动画适合长时间加载,进度条类也可以更细分,比如有蒙层的进度条,有加载进度条带取消按钮,有加载进度条放在网页顶部,
2471 0
|
JavaScript
Vue3.0项目——打造企业级音乐App(二)图片懒加载、v-loading指令的开发和优化
Vue3.0项目——打造企业级音乐App(二)图片懒加载、v-loading指令的开发和优化
163 0
|
存储 JSON 图形学
Unity 编辑器开发实战【Editor Window】- 构建公司内部的PackageManager
Unity 编辑器开发实战【Editor Window】- 构建公司内部的PackageManager
440 1
Unity 编辑器开发实战【Editor Window】- 构建公司内部的PackageManager
egret微信小游戏自定义加载(loading)界面
egret微信小游戏自定义加载(loading)界面
egret微信小游戏自定义加载(loading)界面
|
开发工具 git
【Vue3.0移动端项目--旅游网】-- Loading加载和导航栏bug调试
【Vue3.0移动端项目--旅游网】-- Loading加载和导航栏bug调试
176 0
【Vue3.0移动端项目--旅游网】-- Loading加载和导航栏bug调试
|
前端开发
前端工作总结147-custom组件
前端工作总结147-custom组件
122 0
前端工作总结147-custom组件
超酷Loading进度条
在线演示 本地下载
999 0
|
Web App开发 移动开发 JavaScript
WebComponent魔法堂:深究Custom Element 之 标准构建
前言  通过《WebComponent魔法堂:深究Custom Element 之 面向痛点编程》,我们明白到其实Custom Element并不是什么新东西,我们甚至可以在IE5.5上定义自己的alert元素。
1568 0

热门文章

最新文章

下一篇
开通oss服务