Windows Phone 8.1中元素适应屏幕宽度或子元素继承父元素宽度的解决方案
来源:互联网 发布:s7200编程软件中文版 编辑:程序博客网 时间:2024/05/15 09:47
在Windows Phone开发过程中,对不同尺寸手机屏幕的适应是对编程的一大要求和挑战,当然这就像做网站要适应各
种各样的电脑屏幕的大小一样.
当然在WP开发这一点上,微软给了我们很多中已经封装好布局的模板和控件,归根结底,还是那几个布局控件:
Grid,StackPanel,Canvas,Pivot.....
所以,分歧就来了,对于追求视觉上冲击和美观的程序员来说,虽说要秉承微软的大块布局,内容为先的策略,但是
依旧不喜欢微软的那些既定的模板,所以解决方案就有两个。
一:创建项目时依旧用那些模板,后期在读懂那些模板的情况下,对其进行样式,模板的更改等等以符合自己的要
求。
二:直接建立一个空模板项目,从零开始,自己设计前台,设计UI,用各种布局控件写自己想要的布局,不受限制。
但从根本上来说,还是要更改一些控件的Template来实现自己想要的效果。
当然,很多人会想,前者花的时间肯定少,确实,对于高手来说,既定模板已经足够,修修改改是很容易的事情。但
是,对于学习的来说,我比较喜欢后者,从根本上弄懂每个控件怎么使用的以及如何自定义的才是我需要的。所以这
应该比第一种花的时间长的多,当然人傻点我觉得还是能学的多一点,当然可以后期弄懂了去看微软给你的项目模板
巩固一下你的认识是最好不过的了。
好了废话不说了,这篇就说一下我遇到的一个问题:
在我用Pivot控件的时候,当然也是在自定义样式的时候,需要设定子元素的宽度和父元素的宽度相等,这个时候难题
就一个一个接着来了。
<Grid> <Pivot x:Name="pivot" Background="Coral"> <Pivot.Title> <Grid Background="Green"> <TextBlock Text="动漫" FontSize="30" /> </Grid> </Pivot.Title> <PivotItem Header="火影"> <Grid> <TextBlock Text="漩涡鸣人" FontSize="50" /> </Grid> </PivotItem> <PivotItem Header="海贼"> <StackPanel> <TextBlock Text="蒙奇D路飞" FontSize="50" /> </StackPanel> </PivotItem> </Pivot></Grid>
从上面的代码和截图可以看出,我设置了Pivot背景为Coral,Grid背景为Green,Grid里面包含了TextBlock控件,但
是Grid就只有在TextBlock占据的范围内背景为绿色的,而我需要的是Grid占据整个一行,和Pivot的宽度是一样的。
那怎么解决呢:
首先要认识一点,Pivot的宽度是不可以指定死的,因为它要适应不同尺寸的屏幕,所以相应的Grid的宽度也不能指
定死,因为它需要与Pivot的宽度一致,而前者要根据屏幕尺寸的不同宽度会不同。
其次呢,我们要认识到可以用绑定这个方法。就是一个元素绑定其他元素的一个属性作为自己的一个属性值使用
最后呢,分清楚元素Width和ActualWidth两个属性的区别
解决方案:给Grid的Width属性设置成{Binding Path=ActualWidth,ElementName=pivot}
<Grid> <Pivot x:Name="pivot" Background="Coral"> <Pivot.Title> <Grid Background="Green" Width="{Binding Path=ActualWidth,ElementName=pivot}"> <TextBlock Text="动漫" FontSize="30" /> </Grid> </Pivot.Title> <PivotItem Header="火影"> <Grid> <TextBlock Text="漩涡鸣人" FontSize="50" /> </Grid> </PivotItem> <PivotItem Header="海贼"> <StackPanel> <TextBlock Text="蒙奇D路飞" FontSize="50" /> </StackPanel> </PivotItem> </Pivot></Grid>
以上,就可以了。当然Grid前面还有距离,之后就要靠自己的自定义调节了。
这边只是提供一个想法,所以遇到其他类似的需求时,就可以这么做了。
- Windows Phone 8.1中元素适应屏幕宽度或子元素继承父元素宽度的解决方案
- [css]如何让一个元素div1的宽度由子元素的宽度决定,并超出父元素div0
- css3 子元素平均宽度
- CSS布局技巧 -- 纯CSS让子元素的宽度总和决定其父元素的宽度
- 居中没有宽度的元素
- 居中没有宽度的元素
- 规定元素的高度,宽度
- HTML元素的宽度计算
- 元素宽度的最大百分比
- js获取元素下所有子元素总宽度赋值给父元素
- JQUERY获取元素高度或宽度
- ie10中元素超出父元素的宽度时不能自动隐藏
- css 父元宽度有子元素撑开
- js获取元素宽度
- 元素自适应宽度、换行
- 对负边距的一些认识(为啥子子元素width:auto,再给个负margin,子元素宽度会超过父元素呢?)
- 当一行子元素占有的宽度之和和父级的宽度相差超过3px
- 利用padding百分比继承父级元素宽度特性实现元素宽高比例缩放
- 早就该出手把"容器适配器"这么看似“高大上”的概念拉下"神坛"了---用vector来实现stack
- NYOJ 19--擅长排列的小明【DFS】
- C++/C语言的标准库函数malloc/free与运算符new/delete的区别
- 阿里笔试题第二题之-------容错技术
- sizeof运算符和strlen函数的区别
- Windows Phone 8.1中元素适应屏幕宽度或子元素继承父元素宽度的解决方案
- Leetcode---Sum Root to Leaf Numbers
- Linux多线程——使用信号量同步线程
- iOS 获取手机的型号,系统版本,软件名称,软件版本
- stagefright框架(二)- 和OpenMAX的運作
- Notepad++使用经验和遇到的问题
- html关闭浏览器事件
- Qt之QComboBox(基本应用、代理设置)
- Ubuntu下安装使用Monaco字体