生活随笔
收集整理的這篇文章主要介紹了
windows phone (23) ScrollViewer元素
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
ScrollViewer類表示可包含其他可見元素的可滾動(dòng)區(qū)域, 一般會(huì)用在屏幕的寬度和高度不夠用時(shí),作為一種延伸使用,參考書上稱之為滾動(dòng)條,在默認(rèn)的情況下垂直滾動(dòng)條是可見的,水平滾動(dòng)條不顯示,即 VerticalScrollBarVisibility和HorizontalScrollBarVisibility兩個(gè)屬性,這兩個(gè)屬性的值是 ScrollBarVisibility枚舉成員【作者:神舟龍】
Visible 顯示滾動(dòng)條;Hidden不顯示滾動(dòng)條;Auto 需要時(shí)顯示;Disabled 可見但是不響應(yīng)觸摸事件,這兩個(gè)屬性也正是下面會(huì)用到的,下面示例中把程序標(biāo)題給更改了,為了顯示更好的效果
xaml代碼:
?????????<StackPanel?x:Name="TitlePanel"?Grid.Row="0"?Margin="12,17,0,28">??????????????????????????<StackPanel.Resources>?????????????????<Style?x:Key="stStyle"?TargetType="TextBlock">?????????????????????<Setter?Property="TextTrimming"?Value="WordEllipsis"></Setter>?????????????????????<Setter?Property="FontSize"?Value="23"></Setter>?????????????????????<Setter?Property="Foreground"?Value="BlueViolet"></Setter>?????????????????????<Setter?Property="HorizontalAlignment"?Value="Center"></Setter>?????????????????</Style>?????????????</StackPanel.Resources>?????????????<TextBlock?x:Name="ApplicationTitle"?Text="笑一笑"?Style="{StaticResource?stStyle}"/>?????????</StackPanel>?可以看到的是我們自定義了樣式,這里定義的原則是先定義再使用,即上面代碼中的textblock 不能再樣式之上,如果這樣系統(tǒng)就會(huì)報(bào)錯(cuò);
內(nèi)容區(qū)域的xaml代碼:
?????????<Grid?x:Name="ContentPanel"?Grid.Row="1"?Margin="12,0,12,0">?????????????<Grid.Resources>?????????????????<Style?x:Key="paragraphStyle"?TargetType="TextBlock">?????????????????????<Setter?Property="TextWrapping"?Value="Wrap"></Setter>?????????????????????<Setter?Property="Margin"?Value="5"></Setter>?????????????????????<Setter?Property="FontSize"?Value="19"></Setter>?????????????????</Style>?????????????</Grid.Resources>?????????????<ScrollViewer?Padding="5"?>?????????????????<StackPanel>?????????????????????<TextBlock?Style="{?StaticResource?paragraphStyle}">????????????????????????一天中午下班,由于天氣挺好.大家就在食堂打了飯一起在外面吃飯.?????????????????????????我就問了,用什么方法修理別人最慘,大家都在一起笑談自己的看法.<LineBreak/>?? ???????????????????一會(huì)就見我侄女打著飯來了,她開口就問:你們?cè)诹氖裁窗?我就說:如果你恨一個(gè)人,?????????????????????????你認(rèn)為用什么方法可以修理的他最慘.她張口就說:找人海扁他一頓,我就說了:?????????????????????????皮肉之傷過幾天就好了,這有什么.她又說了:找?guī)讉€(gè)人狠狠的羞辱他一番,呵呵!心靈上的創(chuàng)傷,?????????????????????????隨著時(shí)間流逝,也會(huì)慢慢的好起來的.我說不算什么?當(dāng)時(shí)她一聽,把手里的碗往花臺(tái)上一放,雙手往腰間一插,右手往上一指,?????????????????????????嘿嘿!嫁給他!我當(dāng)時(shí)無語了,她說:我用一生來折磨他還不夠嗎?<LineBreak/>?? ??????????????????從那以后她多了一個(gè)外號(hào)叫(二莽)?????????????????????</TextBlock>?????????????????????<Line??StrokeThickness="9"?Stroke="Blue"??X1="0"?Y1="20"?X2="480"?Y2="20"></Line>?????????????????????<TextBlock?Style="{StaticResource?paragraphStyle}">?????????????????????????<Run>?一對(duì)年輕人談戀愛,男的想試探女的是否能做到守身如玉,便問女友道:“如果你深夜一人在街上走,突然來了一個(gè)男人要和你親嘴,你怎么辦?”??????????????????????????女友答道:“我會(huì)反抗,并打他一個(gè)耳光。”??????????????????????????男的又問:“如果又來一個(gè)喝醉酒了的男人一下子要抱住你,你怎么辦?”??????????????????????????女友答道:“我會(huì)全力反抗,不讓他得逞。”??????????????????????????男的聽了,高興地連連點(diǎn)頭,繼續(xù)問道:“假如又走來一個(gè)很帥的男人,向你提出那種要求,你怎么辦?”??????????????????????????女友聽了,回答說:“你要知道,????????????????????????</Run>?????????????????????????<Run?FontStyle="Italic">一個(gè)女人的反抗畢竟是有限的!”?</Run>?????????????????????</TextBlock>?????????????????????<Line?Stroke="Blue"?StrokeThickness="9"??X1="0"?Y1="20"?X2="480"?Y2="20"></Line>?????????????????????<TextBlock?x:Name="tb3"?Style="{StaticResource?paragraphStyle?}">?????????????????????????收到一條短信:“今日15點(diǎn)31分開始起,我老婆就要開始陪別人的老公睡啦,我還得幸福的伺候著洗漱更衣沐浴,沒辦法他帶槍來的。”看了百思不得其解,咋會(huì)有這么賤的人。后來一看發(fā)信人,我了個(gè)去,生孩子居然有這樣報(bào)喜的!??????????????????????</TextBlock>?????????????????</StackPanel>??????????????????????????????</ScrollViewer>?????????</Grid>?可以看到這里也有用到自定義樣式,內(nèi)外邊距分別是5,書上說這樣有利于閱讀,不過看到效果后,確實(shí)感覺不錯(cuò);代碼中用到的stackPanel默認(rèn) 為垂直分布,你可以設(shè)置Orientation="Horizontal"為水平方向?qū)ψ釉剡M(jìn)行排列;在每個(gè)段落之前都有Unicode字符“?” 表示所在行縮進(jìn)一個(gè)字符的寬度
?Line類
上面代碼中還使用Line,在兩個(gè)點(diǎn)之間繪制一條直線?,需要滿足的基本屬性是X1,X2,Y1,Y2其中X1,Y1作為起點(diǎn),X2,Y2作為終點(diǎn),并以此進(jìn)行連接成一條直線;可以使用Stroke設(shè)置顏色,并使用StrokeThickness設(shè)置顯示的粗細(xì),這里為了效果,設(shè)置的比較粗;
看效果圖吧:
?
?ScrollViewer默認(rèn)垂直是顯示的,所以效果如上,那么我們?cè)O(shè)置水平滾動(dòng)條顯示效果會(huì)如何那;直接在scrollviewer標(biāo)簽中加HorizontalScrollBarVisibility="Visible"即可,代碼不在貼出,直接來效果吧
?
這里需要注意的是我們?cè)跇邮街幸呀?jīng)設(shè)置了自動(dòng)換行,但是因?yàn)槲覀冊(cè)O(shè)置水平滾動(dòng)條顯示,所以字行換行的行的概念也就沒有了;但是我想知道如果文字不換行的情況下,水平方向上顯示的文字是多長(zhǎng),事實(shí)或許并不是我們想象中的那么好
?
當(dāng)滾動(dòng)條走到大概一半不到時(shí),上面的文字已經(jīng)不顯示了,所以如果文字太長(zhǎng),即使設(shè)置了顯示水平滾動(dòng)條,也不會(huì)完全顯示,這是一種極端的情況,一般也不會(huì)用到
?那么水平滾動(dòng)區(qū)域?qū)挾葧r(shí)多少那,加了個(gè)觸摸完成事件
private?void?sv1_ManipulationCompleted(object?sender,?ManipulationCompletedEventArgs?e)????????{????????????this.ApplicationTitle.Text?=?"水平滾動(dòng)區(qū)域?qū)挾?#xff1a;"?+?sv1.ScrollableWidth.ToString();?????????}??
?版本7.0和7.1的差別:
?
| 行為 | Windows Phone OS 7.0 app/Windows Phone OS 7.0設(shè)備 ? | Windows Phone OS 7.0 or Windows Phone OS 7.1 app/Windows Phone OS 7.1?設(shè)備 |
| ScrollViewer?在滾動(dòng)期間在 UI?線程上更新屬性 | 屬性在值更改時(shí)即更新。 | 屬性在用戶舉起手指時(shí)更新,或當(dāng)用戶在任何方向拖動(dòng)、搖動(dòng),或輕擊屏幕 1/4 時(shí)更新。 ? |
| ManipulationDelta?內(nèi)拖動(dòng)時(shí)?UI?線程上引發(fā)的事件ScrollViewer。 | 通過?ScrollViewer?中的元素處理事件。 | 由于事件處于輸入線程上,這些事件不會(huì)引發(fā)。 ? |
| ? | ? | ? |
第一個(gè)還好理解,第二個(gè)我的理解是因?yàn)橛袧L動(dòng),所以觸摸移動(dòng)是事件ManipulationDelta不會(huì)被引發(fā),這樣就證明了剛剛我是用該事件獲取水平滾動(dòng)寬度得到值為0,
?
如果應(yīng)用程序依賴于 Windows Phone OS 7.0 行為,您可以取消性能改進(jìn)通過在與ListBox關(guān)聯(lián)的?ScrollViewer上,將ManipulationMode?屬性設(shè)置為?Control。?下面的代碼示例演示具體做法。
<ListBox?ItemsSource=
"{Binding?Items}"?ScrollViewer.ManipulationMode?=
"Control"?Height=
"652"?Canvas.Top=
"80">
本文轉(zhuǎn)自shenzhoulong ?51CTO博客,原文鏈接:http://blog.51cto.com/shenzhoulong/846370,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者 ?
總結(jié)
以上是生活随笔為你收集整理的windows phone (23) ScrollViewer元素的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。