欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Win10 UWP 开发学习代码(不断更新)

程序员文章站 2022-03-08 16:03:42
页面之间跳转(传值) 另一个页面接收 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;

Win10 UWP 开发学习代码(不断更新)

 

Win10 UWP 开发学习代码(不断更新)

 

Win10 UWP 开发学习代码(不断更新)

 

数据绑定 

 

 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;
}