设为首页 收藏本站
查看: 1056|回复: 0

Windows 8 Metro开发学习笔记1

[复制链接]

尚未签到

发表于 2015-5-23 13:06:16 | 显示全部楼层 |阅读模式
  最近开始翻《Programming Windows 6th》这书,翻了几章,开始照着里面的示例写了一下。下面笔记都是基础中的基础,仅作翻译记录。
  1. XAML(读Zemmel)
  XAML全称eXtensible Application Markup Language,是微软在Vista时代开始使用的新型界面表现语言,Silverlight、WP App和现在的Metro App的界面设计都是利用此语言进行设计的。此语言与XML类似,使用过程比较简单。
  在Windows 8 Metro App中,界面暂时只能用XAML来设计(本人暂时了解如此)。XAML负责软件界面部分,在界面设计中除了使用XAML标记,还可以使用C#代码。
  XAML文件编译完成后生成的是*.i.cs文件,从XAML文件中控件标记经过编译后生成C#对象,储存在cs文件中。
  XAML的使用方便开发者的界面设计,但是在开发过程中我们甚至可以不用任何XAML代码设计界面,下面是一个Demo。可先将项目文件夹下面的XAML以及后台代码cs文件删除,再将下面的代码复制另存为App.cs后,F5编译Debug即可。
using System;
using Windows.ApplicationModel.Activation;
using Windows.Foundation; // 引用坐标命名空间
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Shapes; // 引用形状命名空间
namespace TryStrippedDown
{
public class App: Application
{
static void Main(string[] args)
{
Application.Start((p) => new App());
}
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
// 添加Polyline实例
Polyline polyline = new Polyline
{
Fill = new SolidColorBrush(Colors.White),
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
};
for (int angle = 0; angle < 3600; angle++)
{
double radians = Math.PI * angle / 180;
double radius = angle / 10;
double x = 360 + radius * Math.Sin(radians);
double y = 360 + radius * Math.Cos(radians);
polyline.Points.Add(new Point(x, y));
}
Window.Current.Content = polyline;
Window.Current.Activate();
}
}
}

2. MVVM:Model-View-ViewModel
  MVVM的推出,有助于整个应用的前台和后台代码分离,各司其职,减少耦合度。
  此部分笔记未完待续。



3. Path:BezierSegment、LineSegment和ArcSegment
  界面设计时,我们难免会要画一些图形之类的来代替图片。至于用绘制的图形来代替图片哪个会更节省资源,这个还要继续深入探讨。但一般来说是绘制的简单图形会更节省资源。
  绘制图形我们需要使用Windows.UI.Xaml.Shapes这个命名空间,里面有Path这个控件。
  Path控件定义了一个Data属性(Geometry的一种类型,定义于Windows.UI.Xaml.Media命名空间中),Data属性由一组锚点数字(有用过PS里面的钢笔的都会知道)来组成。
  Path控件中,可以有以下的PathFigure:


  • LineSegment
  • PolylineSegment
  • BezierSegment
  • PolyBezierSegment
  • QuadraticBezierSegment
  • PolyQuadraticBezierSegment
  • ArcSegment
  上面的PathFigure都可以是组成Path各个部分,即整个图形中的分部件。

   


  Data属性是一串长的字符串,但是可以分行表示不同的部分。


  • M代表“Move”移动画图光标,后面紧接着一组(x,y)坐标
  • L代表直线(准确地说是折线)
  • C是立方Bezier曲线,后面紧接着控制点和结束点,可以有多个
  • A是弧线,需要使用弧度(rad)
  若使用后台代码,而非XAML来绘制Path,则在实例化Path对象之后,可以使用XamlReader.Load(包含于Windows.UI.Xaml.Markup命名空间),将XAML字符串转换为图形。局限性在于,XamlReader不能引用事件处理中带入的外部代码。

        Geometry PathMarkupToGeometry(string pathMarkup)
{
string xaml =
&quot;&quot; +
&quot;&quot; + pathMarkup + &quot;&quot;;
Path path = XamlReader.Load(xaml) as Path;
// Detach the pathGeometry from the Path
Geometry geometry = path.Data;
path.Data = null;
return geometry;
}
4. Styles,样式
  在Xaml文件中,可以对Page定义Resources,来统一使用相关的样式。


Shared Brush with Style











  也可以于后台代码中定义样式:

Style style = new Style(typeof(TextBlock));
style.Setters.Add(new Setter(TextBlock.FontSizeProperty, 96));
style.Setters.Add(new Setter(TextBlock.FontFamilyProperty,
new FontFamily(&quot;Times New Roman&quot;)));

  以上定义是对程序中的TextBlock样式进行定义。
  定义样式的时候,还可以使用样式的继承,利用BaseOn属性。


  继承之后可对样式进行相应重写,没有重写的部分将继承于之前的样式。
  当一个样式定义的时候没有定义x:Key的时候,此样式为Implicit Style(隐式样式)。实际上Key值在场景后自动生成了,它是指向TextBlock类的一类RuntimeType的对象(非public类)。【注:此话不知道怎样翻译好,书里面看着不大懂。】
  当TextBlock控件中没有定义具体的样式名称时,TextBlock将使用隐式样式定义的样式,很强大的功能。
  注意:新的样式不能继承自隐式样式,但隐式样式则可继承自一个非隐式样式。



5. 数据绑定简述

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-69847-1-1.html 上篇帖子: 【Windows 8】pid为4的system进程占用80端口的解决办法 下篇帖子: 2005年8月11日 MSDN WebCast《Windows移动开发系列课程:设计友好的Windows Mobile 应用程序》资源下载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表