`

wp7学习笔记 之一

    博客分类:
  • WP7
 
阅读更多

Emulator中文叫仿真器,是精确地在一种环境下仿真另一种环境下的运行方式。其目的是完全仿真。Simulator中文叫模拟,是通过某种手段来模拟某些东西,不一定要完全正确的原理,追求的只是尽可能的相像。所以XDE是WP7的Emulator,是一个WP7的虚拟机,我准备写一个XP下开发WP7程序的Simulator。

1、XBox和WP7之间的游戏移植很方便。
2、WP7程序不能运行在后台,不支持多任务。
3、C#是唯一支持的开发语言,不能使用native code,不能PInvoke
4、WP7使用Zune连接电脑,不再支持通过ActiveSync的联系人的同步,而是通过网络同步联系人。
5、使用高级Task的时候必须对模拟器进行Unlock,因为没有Unlock的话模拟器的内容很少。
6、WP7首页上的方框叫Tile,
7、一个程序只能有一个Frame,是所有页面的容器,为SystemTray和ApplicationBar预留空间
8、显示的方向通过Orientation属性来设置:Portrait是竖向,Landscape是横向;SupportedOrientations属性设置支持的方向(默认值是Portrait,也就是只支持竖向。如果设置为PortraitOrLandscape则在转向的时候界面会自动调整);当转向的时候OrientationChanged事件会被触发。
9、WP7中页面的跳转不再是Show这种方式,而是页面Navigation跳转,类似于网页:this.NavigationService.Navigate(new Uri("/Page1.xaml",UriKind.Relative));this.NavigationService.GoBack();this.NavigationService.GoForward();
跳转的时候还可以填值:this.NavigationService.Navigate(new Uri("/Page1.xaml?name=tome",UriKind.Relative));
页面中获取值:this.NavigationContext.QueryString["name"];

可以override OnNavigatedFrom、OnNavigatedTo、OnNavigatingFrom几个方法进行导航的响应。

在普通SL中执行这个的话需要使用“导航Silverlight”模板,参考:http://www.cnblogs.com/steven_gsj/archive/2010/04/24/1719265.html 如果导航失败的话是设置UriMapper的原因,清空即可。NavigationService在Page中才有。

10、shell:SystemTray.IsVisiable属性控制SystemTray可见性
11、ApplicationBar就是菜单栏。ApplicationBarIconButton属性IconUrl、Text,图标要求是48*48png图,前景色一般是白色,微软在C:\Program Files\Microsoft SDKs\Windows Phone\v7.0\Icons中提供了一些常用的图标.ApplicationBarIconButton最多只能添加4个,引进图片的时候一定要注意在VS选择图片的属性“BuildAction=Content”、“如果较新则复制”。MenuItems也是放到ApplicationBar中的,MenuItems没有图片、没有二级菜单。

12、Style="{StaticResource PhoneTextNormalStyle}"引用的是资源。代码中用Application.Current.Resources["name"]来加载资源。尽量不要使用自己的颜色,而是引用系统资源中定义的颜色,这个和CSS原理类似。默认系统资源在C:\Program Files\Microsoft SDKs\Windows Phone\v7.0\Design\ThemeResources.xaml下

13、独立存储(IsolatedStorage)只有本程序可以访问该区域,安全性高,默认大小为2GB,不能长期保存数据。位于System.IO.IsolatedStorage命名空间下,solatedStorageFile、solatedStorageFileStream两个类。
创建IsolatedStorageFile的方法IsolatedStorageFile.GetUserStoreForApplication(),IsolatedStorageFile类有CreateDirectory()、DirectoryExists()等很多有用的方法。
创建读写流的方法:IsolatedStorageFileStream stream = new IsolatedStorageFileStream("3.txt", FileMode.OpenOrCreate,
IsolatedStorageFile.GetUserStoreForApplication())

14、在Tile中的图片是在项目的属性中修改的。
15、如果采用Grid布局,相当于ColumnDefinitions和RowDefinitions将界面划分成了网格,然后元素通过Grid.Column、Grid.Row属性来设置它显示在哪个格子中。
16、Canvas布局中代码修改元素位置的方法Canvas.SetLeft(img1,30);
17、Popup容器可以将内部的内容放到顶层显示,IsOpen属性用来标志是否显示。因为SL中页面显示一般是用导航的,但是如果想实现WinForm中对话框的效果就可以用Popup
18、ScrollView包含的内容会可以滚动。
19、HyperlinkButton是一个用于本地、Web的超链接。NavigationUri指向地址,如果指向的是Web地址,则必须设定Target属性。HyperlinkButton可以给Background属性设定ImageBrush来显示图片超链接。
20、用模拟器的时候按Pause键就可以用电脑键盘输入了。
21、TextBox设定InputScope属性可以让软键盘换不同的布局,设置为TelephoneNumber会显示为数字键盘,设置为Url键盘会显示“.com”按钮。所有可选值位于InputScopeNameValue这个枚举中。
22、Image控件只支持png和jpg图片,可以通过Source属性显示本地或者网络图像,网络图片直接填路径就行了,不用通过代码先下载。通过代码加载this.img1.Source = new BitmapImage(new Uri("Desert.jpg",UriKind.Reltive));this.img1.Source = new BitmapImage(new Uri("http://www.baidu.com/Desert.jpg",UriKind.Absolute));
23、MediaElement能够播放本地或者网络上的多媒体,支持WAV、MP3等,支持mms、rtspt、rtsp等流媒体协议。主要属性:IsMuted,是否静音;Stretch,填充方式;AutoPlay:自动播放。事件:MediaOpend、MediaEnded、MediaFailed。
24、推荐使用DispatcherTimer来做定时。因为如果用Timer的话在Timer的Elapsed中访问UI的话需要同步到UI线程执行,而DispatcherTimer是运行在Dispatcher上的,所以访问UI的时候不需要委托到UI线程执行。
25、Thumb是一个可拖动的控件,简化了拖动的开发,Thumb是默认没有再ToolBox中的,需要ChooseItem选进来。通过DragCompleted、DragDelta、DragStarted事件来响应。
当一个Thumb拖动的时候跟着鼠标走:

<Thumb Height="87" HorizontalAlignment="Left" Margin="89,163,0,0" Name="thumb1" VerticalAlignment="Top"
Width="91" DragCompleted="thumb1_DragCompleted" DragDelta="thumb1_DragDelta">
<Thumb.RenderTransform>
<TranslateTransform x:Name="tr"></TranslateTransform>
</Thumb.RenderTransform>
</Thumb>
private void thumb1_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
tr.X = tr.X+e.HorizontalChange;
tr.Y = tr.Y+e.VerticalChange;
}

在Silverlight中一般不直接修改元素的坐标、大小,在需要修改元素的坐标、大小的时候一般使用Transform来做。
26、ListBox通过ItemTemplate来定制外观,Template内部用Text="{Binding Text}"进行绑定
绑定的对象的类要是public的,否则会绑定失败

<ListBox Height="361" HorizontalAlignment="Left" Margin="60,165,0,0" Name="listBox1" VerticalAlignment="Top" Width="311" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Width="100" Height="100" Source="{Binding Avatar}"/>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Age}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public ImageSource Avatar { get; set; }
}

List<Person> list = new List<Person>();
list.Add(new Person { Name="Tom",Age=20,Avatar=new BitmapImage(new Uri("Images/1.jpg",UriKind.Relative))});
list.Add(new Person { Name = "Jim", Age = 22, Avatar = new BitmapImage(new Uri("Images/2.jpg", UriKind.Relative)) });
listBox1.ItemsSource = list;

ImgSource属性是ImageSource类型,ImageSource的一个子类是BitmapImage
27、InkPresenter可以产生手写效果。事件:LostMouseCapture、MouseLeftButtonDown、MouseMove。
鼠标画图的典型代码:

private Stroke stroke;
private void inkPresenter1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
inkPresenter1.CaptureMouse();
stroke = new Stroke();
stroke.DrawingAttributes.Color = Colors.Red;
inkPresenter1.Strokes.Add(stroke);
}

private void inkPresenter1_MouseMove(object sender, MouseEventArgs e)
{
stroke.StylusPoints.Add(e.StylusDevice.GetStylusPoints(inkPresenter1));
}

28、WP7中可以使用BMSL来使用BingMaps
29、微软发布了Silverlight控件之外的Silverlight Toolkit,有wp7的版本。提供了额外的控件:AutoCompleteBox、ContextMenu、DatePicker、TimePicker、LongListSelector、ListPicker、ToggleSwitch(很好看的开关)、WrapPanel等控件
1)ContextMenu控件提供了上下文菜单,长按屏幕弹出,因为手机中没有右键。ContextMenu不能用在容器控件中

<TextBox Height="72" HorizontalAlignment="Left" Margin="17,109,0,0" Name="textBox1" Text="TextBox"
VerticalAlignment="Top" Width="384">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="复制"/>
<toolkit:Separator/>
<toolkit:MenuItem>
<toolkit:MenuItem.Header>
<Image Width="30" Height="30" Source="ApplicationIcon.png"/>
</toolkit:MenuItem.Header>
</toolkit:MenuItem>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</TextBox>

ContextMenu还可以设定Margin属性,这时候Margin属性用来改变菜单相对于控件的位置。
2)WrapPanel会将放到其中的控件按照从左到右、从上到下的顺序依次排列。
3)DatePicker、TimePicker是非常易用的日期、时间选择器,而且可以通过ValueStringFormat来修改显示格式,语法就是DateTime.ToString的格式语法。
4)ListPicker和ListBox的不同在于,如果为FullMode那么当点击ListPicker的时候会弹出一个全屏窗口来选择,用起来更方便。
5)LongListSelector用来对数据进行快速的分类定位,非常方便,用起来比较复杂,看例子就行。

30、Panorama控件是一个全景视图控件,像一个窗口,能够查看内容的一部分。全景视图由Background、Title、Items组成。可以自己加这些控件,也可以用项目向导中的“WindowsPhone Panorama Application”快速创建一个完整的Panorama控件项目,用来学习很方便。用法看向导生成的代码即可。
31、Pivot控件是一个竖向滚动的控件。
32、WP7中可以使用DeepZoom技术。
wp7社区 http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series
33、Blend的使用:
1)向左下角倾斜的按钮是渐变工具,可以设置控件的渐变。渐变有线性渐变、径向渐变两种。
2)笔刷变换工具是对控件的Brush进行变形的工具,和控件变形不一样。
3)转换(Transform)中的RenderTransfer可以用来实现旋转、缩放、位移等效果。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    UPS、蓄电池、空开、电缆配置计算方法.pptx

    5G通信行业、网络优化、通信工程建设资料

    node-v7.4.0.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Unity mesh减面工具 Mesh Simplify 1.12

    Unity mesh减面工具 Mesh Simplify 1.12

    基于Springboot+Vue酒店客房入住管理系统-毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    JAVA扫雷游戏程序+源码

    扫雷游戏是一款经典的计算机游戏,它的目标是在一个方格矩阵中找出所有隐藏的地雷。玩家需要通过点击方格来揭示其内容,如果方格中有地雷,则游戏结束;如果没有地雷,则会显示周围8个方格中地雷的数量。玩家需要根据这些信息来判断哪些方格是安全的,并继续点击其他方格。 在JAVA扫雷游戏程序中,我们使用了一个二维数组来表示游戏的方格矩阵。每个方格可以包含以下三种状态之一:未被揭示、有地雷或安全。我们还使用了一些辅助变量来跟踪游戏中的状态,例如已揭示的方格数量和剩余的地雷数量。 当玩家点击一个方格时,程序会检查该方格是否已经被揭示。如果是,则不做任何操作;否则,程序会揭示该方格的内容,并根据其是否包含地雷来更新游戏状态。如果方格中有地雷,则游戏结束;否则,程序会递归地揭示周围的方格,直到遇到已经揭示的方格为止。 为了提高游戏的可玩性,我们可以添加一些额外的功能,例如计时器、难度级别选择和自定义方格大小等。此外,我们还可以使用图形用户界面(GUI)来美化游戏界面,使其更加友好和易于操作。

    python-3.8.19-amd64-full.exe

    仅供个人娱乐使用,不要乱用造成侵权,搬运自git删hub.co除m/ad中ang1345/Pyt文honW部ind分ows

    网络安全网络安全视频教程56讲全在线地址.txt

    【网络安全】网络安全视频教程56讲全在线地址.txt

    299-企业数字化转型方案20220804.pptx

    299-企业数字化转型方案20220804.pptx

    参考资料-人工智能对劳动力市场的影响机制研究.pdf

    参考资料-人工智能对劳动力市场的影响机制研究.pdf

    3D Facial Expressions

    3D Facial Expressions through Analysis-by-Neural-Synthesis

    AI设计工具-美图设计室:一键生成海报宣传画.txt

    AI设计工具-美图设计室:一键生成海报宣传画

    node-v10.12.0-linux-armv6l.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于Springboot+Vue的商业辅助决策系统的设计与实现-毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    5MHz 函数发生器使用说明书

    5MHz 函数发生器使用说明书

    大学生就业平台微信小程序+ssm后端毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    通信驻地网施工组织方案.doc

    5G通信、网络优化与通信建设

    管道顶管工程施工技术.doc

    5G通信、网络优化与通信建设

    Unity 穿墙挖洞-CSG

    Unity 穿墙挖洞——CSG

    基于Python的医院挂号系统带vue前后端分离毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    199-实时数据仓库建设体系.pdf

    199-实时数据仓库建设体系.pdf

Global site tag (gtag.js) - Google Analytics