Win10 UWP 开发学习代码(不断更新)
程序员文章站
2022-06-23 10:02:49
页面之间跳转(传值) 另一个页面接收 Toast通知 磁贴操作 添加磁贴 删除,修改磁贴 磁贴通知 HttpClient Weather天气实战 利用GPS获取手机坐标(经纬度) 百度地图API获取位置信息 百度天气接口 获取天气信息 天气信息 Info Class 前台Xmal代码绑定 天气数据加 ......
页面之间跳转(传值)
string txt = "Spring Lee"; this.Frame.Navigate(typeof(BlankPage1),txt);
另一个页面接收
protected override void OnNavigatedTo(NavigationEventArgs e) { if (e.Parameter!=null) { T.Content = e.Parameter.ToString(); } }
Toast通知
private void Button_Click(object sender, RoutedEventArgs e) { var toast = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01); var textNodes = toast.GetElementsByTagName("text"); textNodes[0].InnerText = "呵呵呵"; var Message = new ToastNotification(toast); ToastNotificationManager.CreateToastNotifier().Show(Message); }
磁贴操作
添加磁贴
private async void Button_Click(object sender, RoutedEventArgs e) { //磁贴的唯一标识 string TitleId = "My_Title"; //磁贴展示名称 string DiaplayName = "我的磁贴"; //点击磁贴传入的参数 string args = DateTime.Now.ToString(); //磁贴图片URI Uri LogoUri = new Uri("ms-appx:///Assets/cc.jpg"); //磁贴尺寸 var size = TileSize.Square150x150; var Obj = new SecondaryTile(TitleId,DiaplayName,args,LogoUri,size); Obj.VisualElements.ShowNameOnSquare150x150Logo = true; if (await Obj.RequestCreateAsync()) { await new MessageDialog("OK").ShowAsync(); } }
删除,修改磁贴
private async void Button_Click_1(object sender, RoutedEventArgs e) { //磁贴的唯一标识 string TitleId = "My_Title"; var Title = new SecondaryTile(TitleId); Title.VisualElements.ShowNameOnSquare150x150Logo = false; await Title.RequestDeleteAsync(); }
磁贴通知
var toast = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01); var textNodes = toast.GetElementsByTagName("text"); textNodes[0].InnerText = "呵呵呵"; textNodes[1].InnerText = "你是猴子请来的救兵吗?"; textNodes[2].InnerText = "呵呵呵"; var Message = new TileNotification(toast); TileUpdateManager.CreateTileUpdaterForSecondaryTile("My_Title").Update(Message);
HttpClient
string url = "http://www.baidu.com"; HttpClient client = new HttpClient(); string responce = await client.GetStringAsync(url);
Weather天气实战
利用GPS获取手机坐标(经纬度)
var geo = new Geolocator(); var P = await geo.GetGeopositionAsync(); var Po = P.Coordinate.Point.Position;
百度地图API获取位置信息
string AppId = "XTTNdkZYIFCIqKVW1vfYUID3eWOgizwC";
string Type = "json"; string Url = "http://api.map.baidu.com/geocoder/v2/?ak=" + AppId + "&location=" + Po.Latitude + "," + Po.Longitude + "&output=" + Type + ""; HttpClient client = new HttpClient(); var json = await client.GetStringAsync(Url); JsonObject jsonRes = JsonObject.Parse(json); var City = jsonRes.GetNamedObject("result").GetNamedObject("addressComponent").GetNamedString("city");
百度天气接口 获取天气信息
string WeaApi = "http://api.map.baidu.com/telematics/v3/weather?location=" + City + "&output=json&ak=" + AppId; var WeatherJson = await client.GetStringAsync(WeaApi); Info i= JsonConvert.DeserializeObject<Info>(WeatherJson); this.DataContext = i;
天气信息 Info Class
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Weather { public class Info { public int error { get; set; } public string status { get; set; } public string date { get; set; } public List<result> results { get; set; } } public class result { public string currentCity { get; set; } public string pm25 { get; set; } public IList<indexitem> index { get; set; } public IList<weather_data_item> weather_data { get; set; } } public struct weather_data_item { public string date { get; set; } public string dayPictureUrl { get; set; } public string nightPictureUrl { get; set; } public string weather { get; set; } public string wind { get; set; } public string temperature { get; set; } } public struct indexitem { public string title { get; set; } public string zs { get; set; } public string tipt { get; set; } public string des { get; set; } } }
前台Xmal代码绑定
<Page x:Class="Weather.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Weather" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid> <Grid.Background> <ImageBrush ImageSource="ms-appx:///Assets/zhuo.jpeg"/> </Grid.Background> <ProgressRing x:Name="gif"></ProgressRing> <Hub Header="Weather"> <HubSection> <DataTemplate> <StackPanel> <TextBlock Text="{Binding results[0].currentCity}" FontSize="60"></TextBlock> <TextBlock Text="{Binding results[0].pm25}" FontSize="30"></TextBlock> </StackPanel> </DataTemplate> </HubSection> <HubSection> <DataTemplate> <ListView ItemsSource="{Binding results[0].weather_data}"> <ListView.ItemTemplate> <DataTemplate> <Border Width="360" BorderThickness="2" BorderBrush="Green"> <StackPanel> <TextBlock Text="{Binding date}" FontSize="25"></TextBlock> <TextBlock Text="{Binding weather}" FontSize="30"></TextBlock> <StackPanel Orientation="Horizontal"> <Image Source="{Binding dayPictureUrl}" Stretch="Uniform" Width="60" Height="60"></Image> </StackPanel> <TextBlock Text="{Binding wind}" FontSize="25"></TextBlock> <TextBlock Text="{Binding temperature}" FontSize="30"></TextBlock> </StackPanel> </Border> </DataTemplate> </ListView.ItemTemplate> </ListView> </DataTemplate> </HubSection> <HubSection> <DataTemplate> <ListView ItemsSource="{Binding results[0].index}"> <ListView.ItemTemplate> <DataTemplate> <Border> <StackPanel> <TextBlock Text="{Binding tipt}" FontSize="25" Foreground="#FF2996AE"></TextBlock> <TextBlock Text="{Binding zs}" FontSize="30" Foreground="Green"></TextBlock> <TextBlock Text="{Binding des}" FontSize="20" TextWrapping="Wrap"></TextBlock> </StackPanel> </Border> </DataTemplate> </ListView.ItemTemplate> </ListView> </DataTemplate> </HubSection> </Hub> </Grid> </Page>
天气数据加载时用ProgressRing控制
<ProgressRing x:Name="Pro"></ProgressRing> 加载前 Pro.IsActive=True; 加载完毕 Pro.IsActive=false;
数据绑定
public class User { public string Name { get; set; } public string Phone { get; set; } public string Address { get; set; } } protected override void OnNavigatedTo(NavigationEventArgs e) { // TODO: 准备此处显示的页面。 // TODO: 如果您的应用程序包含多个页面,请确保 // 通过注册以下事件来处理硬件“后退”按钮: // Windows.Phone.UI.Input.HardwareButtons.BackPressed 事件。 // 如果使用由某些模板提供的 NavigationHelper, // 则系统会为您处理该事件。 User U = new User(); U.Name = "张三"; U.Phone = "1888"; U.Address = "东北"; this.DataContext = U; }
<TextBox Text="{Binding }"></TextBox> <TextBox Text="{Binding Name}"></TextBox> <TextBox Text="{Binding Address}"></TextBox>
UWP汉堡包菜单
Xaml:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <AppBarButton Click="Button_Click" Height="50" Width="50"> <SymbolIcon Symbol="Bold" HorizontalAlignment="Left" VerticalAlignment="Top"/> </AppBarButton> <SplitView x:Name="mySplit" DisplayMode="CompactOverlay" CompactPaneLength="0" OpenPaneLength="200" IsPaneOpen="False" > <SplitView.Pane> <StackPanel Background="Pink"> <AppBarButton Click="Button_Click" Height="50" Width="50"> <SymbolIcon Symbol="Bold" HorizontalAlignment="Left" VerticalAlignment="Top"/> </AppBarButton> <TextBlock FontSize="20">第一项</TextBlock> <TextBlock FontSize="20">第二项</TextBlock> <TextBlock FontSize="20">第一项</TextBlock> <TextBlock FontSize="20">第二项</TextBlock> <TextBlock FontSize="20">第一项</TextBlock> <TextBlock FontSize="20">第二项</TextBlock> </StackPanel> </SplitView.Pane> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="100">Spring</TextBlock> </SplitView> </Grid>
CS:
private void Button_Click(object sender, RoutedEventArgs e)
{
mySplit.IsPaneOpen = !mySplit.IsPaneOpen;
}