Windows Phone 7开发小技巧

2015-09-30 14:31:59来源:作者:人点击

1.使用Popup来实现自定义的弹出效果。Popup控件弹出的块会一直在屏幕的最前方,所以使用Popup可以实现各种各样的弹出框,并且给了你极大的自定义的空间,很多第三方的弹出框控件的原理其实就是使用了Popup来包装上各种效果来实现的。

Popup使用的方法:

privatePopuppopup; popup=newPopup(); popup.Child=new控件类(); //打开 popup.IsOpen=true; //关闭 popup.IsOpen=false

或者(xaml代码)

<Popupx:Name="popup"><Border><StackPanel>…… </StackPanel></Border></Popup>

或者(cs代码)

//打开 popup.IsOpen=true; //关闭 popup.IsOpen=false

2.在TextBlock控件中使用<LineBreak></LineBreak>进行换行。

<TextBlockTextWrapping="Wrap">测试 <LineBreak></LineBreak><LineBreak></LineBreak>测试 <LineBreak></LineBreak><LineBreak></LineBreak>测试 </TextBlock>

3.捕获物理按键返回键,打开页面,离开页面。Wndows Pone有3个物理按键,返回键,开始键,搜索键,后面两个无法在程序中捕获到。

//点击返回按钮 protectedoverridevoidOnBackKeyPress(System.ComponentModel.CancelEventArgse) { //你的代码 e.Cancel=false; base.OnBackKeyPress(e); } //从其他页面进入该页面 protectedoverridevoidOnNavigatedTo(System.Windows.Navigation.NavigationEventArgse) { //你的代码 base.OnNavigatedTo(e); } //离开当前的页面 protectedoverridevoidOnNavigatedFrom(System.Windows.Navigation.NavigationEventArgse) { //你的代码 base.OnNavigatedFrom(e); }

4.获取父控件里面的子控件的方法。之前在判断ListBox控件什么时候滚到底的时候使用过该方法,这个方法很常用。

//获取第一个子类型 publicstaticTFindChildOfType<T>(DependencyObjectroot)whereT:class { varqueue=newQueue<DependencyObject>(); queue.Enqueue(root); while(queue.Count>0) { DependencyObjectcurrent=queue.Dequeue(); for(inti=VisualTreeHelper.GetChildrenCount(current)-1;0<=i;i--) { varchild=VisualTreeHelper.GetChild(current,i); vartypedChild=childasT; if(typedChild!=null) { returntypedChild; } queue.Enqueue(child); } } returnnull; } //获取所有的子类型 publicstaticList<T>FindAllChildOfType<T>(DependencyObjectroot)whereT:class { varqueue=newQueue<DependencyObject>(); queue.Enqueue(root); List<T>allChild=newList<T>(); while(queue.Count>0) { DependencyObjectcurrent=queue.Dequeue(); for(inti=VisualTreeHelper.GetChildrenCount(current)-1;0<=i;i--) { varchild=VisualTreeHelper.GetChild(current,i); vartypedChild=childasT; if(typedChild!=null) { allChild.Add(typedChild); } queue.Enqueue(child); } } returnallChild; }

5.使用<ControlTemplate>……</ControlTemplate>来扩展控件的各种自定义化的效果,当你需要在控件上实现一些动画的效果,或者在控件上再嵌入其他的一些控件都可以通过设计一个ControlTemplate来实现。

如实现一个按钮的单击效果:

<ButtonContent="Button"Height="72"HorizontalAlignment="Left"Margin="103,197,0,0"Name="button1"VerticalAlignment="Top"Width="160"><Button.Template><ControlTemplate><GridBackground="Transparent"><VisualStateManager.VisualStateGroups><VisualStateGroupx:Name="CommonStates"><VisualStatex:Name="Pressed"><Storyboard><ObjectAnimationUsingKeyFramesStoryboard.TargetName="ButtonBackground"Storyboard.TargetProperty="Background"><DiscreteObjectKeyFrameKeyTime="0"Value="YellowGreen"/></ObjectAnimationUsingKeyFrames><ObjectAnimationUsingKeyFramesStoryboard.TargetName="ButtonBackground"Storyboard.TargetProperty="BorderBrush"><DiscreteObjectKeyFrameKeyTime="0"Value="YellowGreen"/></ObjectAnimationUsingKeyFrames></Storyboard></VisualState></VisualStateGroup></VisualStateManager.VisualStateGroups><Borderx:Name="ButtonBackground"BorderBrush="{TemplateBindingBorderBrush}"BorderThickness="{TemplateBindingBorderThickness}"Background="{TemplateBindingBackground}"Margin="{StaticResourcePhoneTouchTargetOverhang}"><ContentControlx:Name="ContentContainer"Foreground="{TemplateBindingForeground}"HorizontalContentAlignment="{TemplateBindingHorizontalContentAlignment}"VerticalContentAlignment="{TemplateBindingVerticalContentAlignment}"Padding="{TemplateBindingPadding}"Content="{TemplateBindingContent}"ContentTemplate="{TemplateBindingContentTemplate}"/></Border></Grid></ControlTemplate></Button.Template></Button>

6.显示和隐藏手机的顶部托盘,就是顶部那个信号和电池信息那块东西。

//显示 SystemTray.IsVisible=true; //隐藏 SystemTray.IsVisible=false;

遇到一个问题:ApplicationBar的高度无法自定义,当ApplicationBarMenuItem为偶数的时候,下面还多了一大截的空间很影响美观(为奇数的时候就不会多出这一大截的空间,不知道微软为何要这样设计),大家有没有相关的解决方法呢?

原文链接:http://www.cnblogs.com/linzheng/archive/2011/10/27/2226990.html

【责任编辑:王晓东 TEL:(010)68476606】

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台