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