多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 【萬里征程――Windows App開發】SemanticZoom視圖切換

【萬里征程――Windows App開發】SemanticZoom視圖切換

來源:程序員人生   發布時間:2015-04-21 08:31:11 閱讀次數:3929次

相信譽過Windows Phone或Windows 8/8.1/10的朋友對下面這張截圖肯定不陌生。這就是通過SemanticZoom來實現的,當數據過量時,這類控件特別適用。它有1個放大視圖ZoomedInView和1個縮小試圖ZoomedOutView,前者主要用來顯示當前頁面的詳細信息,后者則致力于快速導航。

這里寫圖片描述

那末我就自己來動手實踐咯,首先我們在XAML中添加大致的界面,就像畫畫要先畫輪廓1樣。

<Grid Name="grid1" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <SemanticZoom x:Name="semanticZoom" VerticalAlignment="Center" HorizontalAlignment="Center"> <SemanticZoom.ZoomedOutView> </SemanticZoom.ZoomedOutView> <SemanticZoom.ZoomedInView> </SemanticZoom.ZoomedInView> </SemanticZoom> </Grid>

然后分別在這兩個視圖中添加你想要加入的東西。這里的核心就是,ZoomedOutView和ZoomedInView都是使用的同1個CollectionViewSource對象作為自己的數據集的。而這個屬性我們在上1節談到過:【萬里征程――Windows App開發】ListView&GridView之分組。

我們先把后臺代碼寫好。我就像1篇那樣裝腔作勢寫1個類吧^_^

public class Alarm { public string Title { get; set; } public DateTime AlarmClockTime { get; set; } public string Description { get; set; } }

然后用1個函數來添加1大堆數據……1大堆數據。

private Alarm[] AddAlarmData() { return new Alarm[] { new Alarm {Title="Alarm 1",AlarmClockTime=globalTime.AddHours(17),Description="First Alarm for Study" }, new Alarm {Title="Alarm 2",AlarmClockTime=globalTime.AddHours(2),Description="Second Alarm for Study" }, new Alarm {Title="Alarm 3",AlarmClockTime=globalTime.AddHours(7),Description="Third Alarm for Study" }, new Alarm {Title="Alarm 4",AlarmClockTime=globalTime.AddHours(4),Description="4th Alarm for Study" }, new Alarm {Title="Alarm 5",AlarmClockTime=globalTime.AddHours(5),Description="First Alarm for Fun" }, new Alarm {Title="Alarm 6",AlarmClockTime=globalTime.AddHours(1),Description="First Alarm for Fun" }, new Alarm {Title="Alarm 7",AlarmClockTime=globalTime.AddHours(15),Description="Second Alarm for Fun" }, new Alarm {Title="Alarm 8",AlarmClockTime=globalTime.AddHours(9),Description="Third Alarm for Fun" }, new Alarm {Title="Alarm 9",AlarmClockTime=globalTime.AddHours(20),Description="4th Alarm for Fun" }, new Alarm {Title="Alarm 10",AlarmClockTime=globalTime.AddHours(14),Description="Second Alarm for Sleep" }, new Alarm {Title="Alarm 11",AlarmClockTime=globalTime.AddHours(9),Description="First Alarm for Sleep" } }; }

由于我們最后要把放大視圖變成縮藐視圖,記得縮藐視圖上面有1些ABCD之類的字母么,這里我們用的是時間,就分成中午晚上等好啦。就通過下面這樣的1個函數來弄定。其用了1個鍵值對,用time作為參數。后面再將這些數據挑選出來,綁定到新添加的CollectionViewSource中。至于gridView1和gridView2是行將添加到XAML中,這里可以先不填,1回再補上。

Func<int, string> SwitchTime = (time) => { if (time <= 10 && time >= 6) return "上午"; else if (time > 10 && time < 14) return "中午"; else if (time >= 14 && time <= 20) return "下午"; else return "晚上"; }; var varTime = from t in AddAlarmData() orderby t.AlarmClockTime.Hour group t by SwitchTime(t.AlarmClockTime.Hour); CollectionViewSource collectionVS = new CollectionViewSource(); collectionVS.IsSourceGrouped = true; collectionVS.Source = varTime; this.gridView1.ItemsSource = collectionVS.View.CollectionGroups; this.gridView2.ItemsSource = collectionVS.View;

我們先來寫主視圖(也就是放大視圖)。

<GridView x:Name="gridView2" IsSwipeEnabled="True" HorizontalAlignment="Center" VerticalAlignment="Center" ScrollViewer.IsHorizontalScrollChainingEnabled="False" Width="1800" Height="1000"> <GridView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Margin="12" HorizontalAlignment="Left" Background="White"> <TextBlock Text="{Binding Title}" TextWrapping="Wrap" Foreground="Red" FontFamily="Harrington" Width="150" Height="100" FontSize="26" FontWeight="Light"/> <TextBlock Text="{Binding AlarmClockTime}" Foreground="Red" TextWrapping="Wrap" Width="150" Height="100" FontFamily="Harrington" FontSize="26" FontWeight="Light"/> <TextBlock Text="{Binding Description}" Foreground="Red" TextWrapping="Wrap" Width="150" Height="100" FontFamily="Harrington" FontSize="26" FontWeight="Light"/> </StackPanel> </DataTemplate> </GridView.ItemTemplate> <GridView.ItemsPanel> <ItemsPanelTemplate> <ItemsWrapGrid MaximumRowsOrColumns="8"/> </ItemsPanelTemplate> </GridView.ItemsPanel> <GridView.GroupStyle> <GroupStyle> <GroupStyle.HeaderTemplate> <DataTemplate> <TextBlock Text='{Binding Key}' Foreground="{StaticResource ApplicationForegroundThemeBrush}" Margin="12" FontSize="30" FontFamily="華文采云" FontWeight="ExtraBold" /> </DataTemplate> </GroupStyle.HeaderTemplate> </GroupStyle> </GridView.GroupStyle> </GridView>

相信大家都能看得懂,另外稍后我會在截圖中添加1些注釋的哦。然后是縮藐視圖。

<GridView Name="gridView1" Background="Wheat" ScrollViewer.IsHorizontalScrollChainingEnabled="False" HorizontalAlignment="Center" VerticalAlignment="Center" Width="600" Height="200"> <GridView.ItemTemplate> <DataTemplate> <TextBlock Width="100" Height="100" Text="{Binding Group.Key}" FontFamily="華文行楷" FontWeight="Normal" FontSize="24" /> </DataTemplate> </GridView.ItemTemplate> <GridView.ItemsPanel> <ItemsPanelTemplate> <ItemsWrapGrid ItemWidth="100" ItemHeight="100" MaximumRowsOrColumns="2"/> </ItemsPanelTemplate> </GridView.ItemsPanel> <GridView.ItemContainerStyle> <Style TargetType="GridViewItem"> <Setter Property="Margin" Value="12" /> <Setter Property="Padding" Value="3" /> <Setter Property="BorderThickness" Value="1" /> <Setter Property="Background" Value="Green"/> </Style> </GridView.ItemContainerStyle> </GridView>

那末代碼就到這里為止了,接下來自然就是截圖了。

這里寫圖片描述

這里寫圖片描述

(這類圖片如果看不清的話可以保存到電腦上再看。)

那末這篇博客就結束啦,再次感謝大家的支持!關于這些字體呢,大家可以看這篇:【萬里征程――Windows App開發】使用華麗麗的字體。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 91嫩草国产在线观看免费 | 中文综合 | 最近2019中文字幕免费看最新 | 自拍偷拍 欧美日韩 | 最近最新中文字幕免费高清1 | 免费福利网站在线观看 | 成人亚洲精品一区二区 | 亚洲国产精品免费 | 国产99精品一区二区三区免费 | 欧美18 19sex性处video | 亚洲韩国欧美 | 欧美日韩一区视频 | 午夜看片网站 | 国产v在线播放 | 日本高清无卡码一区二区久久 | 国产精品久久久久久久久久久不卡 | 国产成人精品福利网站人 | 国产精品 第二页 | 日韩欧美一区二区三区不卡 | 中文字幕无线码一区二区三区 | 免费亚洲网站 | 欧美成人综合视频 | 国产精品国产三级国产专不∫ | 成人乱码一区二区三区四区 | 欧美高清另类videosbestsex | 国产一区二区三区免费播放 | 91精品欧美一区二区三区 | 欧美成人一区二区三区在线视频 | 日本色午夜 | 精品亚洲视频在线 | 欧美videos黑人巨大 | linode日本iphone强汉 | 中文字幕在线2021 | 五月天校园春色 | 2019精品手机国产品在线 | 羞羞色在线 | 午夜爽爽视频 | 中文字幕第二一区 | 操操久久 | 在线观看免费视频 | 爱爱免费视频网站 |