silverlight项目小结

最近又用silverlight做了一个小的东西,如图:

主要就是下边的导航,点击了后上边的大图和文字简介都跟着做相应的变化。

界面设计的思路:整个silverlight采用Grid布局,分为四个层,由下至上分别为:背景层、导航层、简介层、rss按钮层。其中简介层也为grid布局分两个部分,一个大图一个右边的文本区域,由于文本区域分四个部分而且文本长度不固定,所以这个区域选用StackPanel做布局。

 导航部分用了“Silverlight Contrib”这个控件库中的“CoolMenu”控件。其自带的demo中是直接把各个Item写好在xaml中。这里我是需要从我的配置文件中读取数据后在加载到导航中。动态加载的方法如下:

在xaml中先实例化一个控件:

<sc:CoolMenu x:Name="xCoolMenu">
            <sc:CoolMenu.Items>
                <sc:CoolMenuItemCollection>
                </sc:CoolMenuItemCollection>
            </sc:CoolMenu.Items>
        </sc:CoolMenu>

在再后台代码中加载:

foreach (DataModel dm in listData)
            {
                StreamResourceInfo sri = Application.GetResourceStream(new Uri("Heros;component/assets/" + dm.spic, UriKind.Relative));
                BitmapImage bi = new BitmapImage();
                bi.SetSource(sri.Stream);
                Image img = new Image();
                img.Source = bi;
                img.Margin = new Thickness(15);
                img.Cursor = Cursors.Hand;
                img.DataContext = dm;


                CoolMenuItem it = new CoolMenuItem();
                it.Content = img;
                it.Content.Width = 89;
                it.Content.Height = 76;

                xCoolMenu.Items.Add(it);
            }

这里我的配置文件和所使用到的所有的图片是直接放到了silverlight项目中 。

所以再在这里顺便提上一个小技巧:从xap文件中读取文件

读取图片文件:

StreamResourceInfo sri = Application.GetResourceStream(new Uri("Heros;component/assets/" + dm.spic, UriKind.Relative));
                BitmapImage bi = new BitmapImage();
                bi.SetSource(sri.Stream);
                Image img = new Image();
                img.Source = bi;

读取XML文件并用Linq来初始化数据:

public void InitDataModel() {
            StreamResourceInfo sri = Application.GetResourceStream(new Uri("Heros;component/Data/DataModel.xml", UriKind.Relative));
            
                XmlReader reader = XmlReader.Create(sri.Stream);
                XDocument document = XDocument.Load(reader);
                listData = (from c in document.Descendants("model")
                            select new DataModel
                            {
                                t1 = c.Element("t1").Value,
                                t2 = c.Element("t2").Value,
                                t3 = c.Element("t3").Value,
                                url = c.Element("url").Value,
                                spic = c.Element("spic").Value,
                                bpic = c.Element("bpic").Value
                            }).ToList<DataModel>();
            
            sri.Stream.Close();
            sri.Stream.Dispose();
        }

这里做一个小的说明:

StreamResourceInfo sri = Application.GetResourceStream(new Uri("{0};component/{1}", UriKind.Relative));

0为xap程序集的名字,

1为要读取的文件在在xap中的路径。

 项目很简单   :)  就写上这么多吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏nimomeng的自我进阶

抓住iOS的未来 - 30天学习编写30个Swift小程序

=======================================================

51120
来自专栏岑志军的专栏

Quartz2D实战-画板工具

12640
来自专栏技术博客

Win8中缩放视图(SemanticZoom控件)

    SemanticZoom控件可以让用户缩放具有相同内容的两个不同视图。其中有一个是主视图。另外一个视图可以让用户进行快速导航。例如,当用户查看地址簿时,...

8310
来自专栏ytkah

css自动换行如何设置?url太长会撑开页面

  我们更新文章时如果有引用其他文章一般会带一个原文url,但这个链接如果太长的话会把内容的版块撑开,整个排版乱了。那我们能不能设置css自动换行呢?如下图所示...

31250
来自专栏游戏杂谈

Unity插件扩展中组件常用的几个方法

最近为美术编写一个Unity编辑器的扩展,主要为了减轻美术在修改预制对象时的机械化操作的繁琐和出错。具体实现的几个功能:

48410
来自专栏技术总结

YYImage框架瞧一瞧

建议查看原文:https://www.jianshu.com/p/83edaeeb5851(不定时更新)

16530
来自专栏木头编程 - moTzxx

PHP 自定义图片的生成与保存实例讲解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

34630
来自专栏HT

基于HTML5 Canvas WebGL制作分离摩托车

工业方面制作图表,制作模型方面运用到 3d 模型是非常多的,在一个大的环境中,构建无数个相同的或者不同的模型,构建起来对于程序员来说也是一件相当头疼的事情,我们...

22150
来自专栏数据小魔方

动态图表系列1|数据有效性(index+match函数)

今天开始跟大家分享动态图表的技巧1——数据有效性(index+match函数)! 动态图表之——数据有效性(index+match) 首先利用数据验证制作下拉菜...

47970
来自专栏练小习的专栏

可视化格式模型基础应用实例

今天在群里看到一个需求,先放demo <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> ...

205100

扫码关注云+社区

领取腾讯云代金券