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

相关文章
|
11月前
|
JavaScript
Vue3.0项目——打造企业级音乐App(二)图片懒加载、v-loading指令的开发和优化
Vue3.0项目——打造企业级音乐App(二)图片懒加载、v-loading指令的开发和优化
128 0
|
JavaScript
elementui源码学习之仿写一个el-timeline
elementui源码学习之仿写一个el-timeline
261 0
|
API
elementui源码学习之仿写一个el-badge标记
elementui源码学习之仿写一个el-badge标记
140 0
egret微信小游戏自定义加载(loading)界面
egret微信小游戏自定义加载(loading)界面
egret微信小游戏自定义加载(loading)界面
|
前端开发
前端项目实战60-ant design table查询需要用loading加加载状态
前端项目实战60-ant design table查询需要用loading加加载状态
97 0
|
开发工具 git
【Vue3.0移动端项目--旅游网】-- Loading加载和导航栏bug调试
【Vue3.0移动端项目--旅游网】-- Loading加载和导航栏bug调试
122 0
【Vue3.0移动端项目--旅游网】-- Loading加载和导航栏bug调试
|
前端开发
前端学习案例-ant design model实现图片预览
前端学习案例-ant design model实现图片预览
185 0
|
开发工具 图形学
|
缓存 移动开发
网友需求 - 使用 50 行代码在 Ant Design Pro 中完成 Umi 状态保持的多tabs布局
网友需求 - 使用 50 行代码在 Ant Design Pro 中完成 Umi 状态保持的多tabs布局
1778 1
网友需求 - 使用 50 行代码在 Ant Design Pro 中完成 Umi 状态保持的多tabs布局
|
JavaScript
Ant Design Vue照片墙a-upload
Ant Design Vue照片墙a-upload