这一节,我们要做的是把设置界面写好。不好以为那么容易,因为涉及到ListPicker的数据绑定,而且数据是从数据库里面查询获取的,所以并不是拖连个控件就可以完成的事,不过,拖控件不是件好事,要尽量避免。
接下来要做的是要从MainPage导航到SetPage。那么怎么做呢?
那么,来释放ApplicationBar出来吧。看下图,其实微软早已为我们写好了ApplicationBar了。只要去掉注释就行了。原来自动生成的ApplicationBar带有2个Icon按钮,和两个下拉菜单按钮。我们暂时只需要一个按钮就行了。
修改如下:
运行,是不是发现那个按钮没有显示图标。。因为那个图标路径是不对的。
现在到SDK的安装目录把图标弄出来吧。到C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Icons\dark(C为SDK安装目录)下。找到appbar.feature.settings.rest.png。复制。然后到解决方案资源管理器,在工程上右键---添加---新建文件夹---命名为Icons----在Icons文件夹上面右键--粘贴。
<shell:ApplicationBarIconButton IconUri="/Icons/appbar.feature.settings.rest.png" Text="设置"/>
接着,运行。是否已经看到图标了呢。。。
那么怎么能够看到被挡住的内容呢,我们给界面加个滚动就可以了。ScrollViewer就上场了。
在MainPage里面给ContentPanel添加ScrollViewer。
如下:
点击运行。是不是拖下去能够正常看到了呢。
敲击"C"出现这样:
private void ApplicationBarIconButton_Click(object sender,EventArgs e) { NavigationService.Navigate(new Uri("/WeatherForecast;component/SetPage.xaml",UriKind.Relative)); }
点击运行。是不是发现现在点击那个IconButton可以导航到SetPage页面了呢。
接下来就做SetPage的布局。这里要使用到ListPicker。这个是silverlight for window phone toolkit提供的。没有安装的话到这里下载安装:http://silverlight.codeplex.com/releases/view/55034
查看工具箱--找下是否有ListPicker控件(一般来说第一次使用的时候是没有的)--发现没有,在工具箱右键---选择项--
找到ListPicker,勾上--确定。然后你就能在工具箱上发现ListPicker了。如下图:
下面是SetPage的布局代码:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,12,0"> <Grid.RowDeFinitions> <RowDeFinition Height="100"/> <RowDeFinition Height="100"/> <RowDeFinition Height="100"/> <RowDeFinition Height="100"/> </Grid.RowDeFinitions> <TextBlock Text="省份:" Grid.Row="0" FontSize="40" HorizontalAlignment="Left" VerticalAlignment="Bottom"/> <toolkit:ListPicker x:Name="provincelp" Grid.Row="1" SelectionChanged="province_SelectionChanged" /> <TextBlock Text="城市:" Grid.Row="2" FontSize="40" HorizontalAlignment="Left" VerticalAlignment="Bottom"/> <toolkit:ListPicker x:Name="citylp" Grid.Row="3" SelectionChanged="city_SelectionChanged"/> </Grid>
现在添加SetPage的Loaded事件,在Loaded事件要添加ListPicker的数据绑定。
代码如下:
string[] prov = { "北京","上海","天津","重庆","黑龙江","吉林","辽宁","内蒙古","河北","山西","陕西" }; private void PhoneApplicationPage_Loaded(object sender,RoutedEventArgs e) { //给省份的listpicker绑定数据 provincelp.ItemsSource = prov; } private void provincelp_SelectionChanged(object sender,SelectionChangedEventArgs e) { ListPicker lp = sender as ListPicker; string p = lp.SelectedItem.ToString(); cityDataBind(p); } /// <summary> /// 由当前选择的省份给city的ListPicker绑定数据 /// </summary> /// <returns></returns> void cityDataBind(String prov) { IList<CityInfoTable> list = null; using (CityDataContext db = new CityDataContext(CityDataContext.connectionString)) { IQueryable<CityInfoTable> queries = from c in db.CityInfos where c.Province == prov select c; list = queries.ToList(); } List<String> l = new List<string>(); foreach (var item in list) { l.Add(item.CityName); } citylp.ItemsSource = l; }
运行,成功!
好了,到这里,这节就算是结束了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。