Fork me on GitHub

UWP 页面间传递参数(常见类型string、int以及自定义类型)

这是一篇很基础的,大佬就不要看了,也不要喷,谢谢🌺🐔😂😂😂。

 

在看实例之前,我们先看一下页面导航Navigate的定义

public bool Navigate(Type sourcePageType);
public bool Navigate(Type sourcePageType, object parameter);
public bool Navigate(Type sourcePageType, object parameter, NavigationTransitionInfo infoOverride);

有三种方法,其中两种是可以传递参数的

 

传递分两种,一种带参数的,一种利用全局变量。

 

 1.带parameter类型的传递

 看一个小李子:

xaml代码定义很简单,

复制代码
            <TextBlock Text="Name: "/>
            <TextBox Grid.Column="1" x:Name="txtName" PlaceholderText="Enter name here"/>

            <TextBlock Grid.Row="1" Text="Age: "/>
            <TextBox Grid.Row="1" Grid.Column="1" x:Name="txtAge" PlaceholderText="Enter age here"/>

            <TextBlock Grid.Row="2" Text="Weight: "/>
            <TextBox Grid.Row="2" Grid.Column="1" x:Name="txtWeight" PlaceholderText="Enter weight here"/>

            <Button Grid.Row="3" Content="Pass Name" Click="PassName"/>
            <Button Grid.Row="3" Grid.Column="1" Content="Pass Object" Click="PassObject"/>
        
复制代码

 

 

主要看一下后台的实现,以及参数是如何传递的:

复制代码
        private void PassName(object sender, RoutedEventArgs e)
        {
            if (txtName.Text.Trim() == "")
                return;

            Frame.Navigate(typeof(ResultPage), txtName.Text.Trim());
        }

        private void PassObject(object sender, RoutedEventArgs e)
        {
            if (txtName.Text.Trim() == "" || txtAge.Text.Trim() == "" || txtWeight.Text.Trim() == "")
                return;

            User user = new User
            {
                Name = txtName.Text.Trim(),
                Age = Convert.ToInt32(txtAge.Text.Trim()),
                Weight = Convert.ToDouble(txtWeight.Text.Trim())
            };
            Frame.Navigate(typeof(ResultPage), user);
        }
复制代码

 

然后新增一个User.cs文件类

1
2
3
4
5
6
public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
    public double Weight { get; set; }
}

 

然后在结果页面ResultPage:

        <TextBox x:Name="txtResult"/>

        <Button Content="Back to MainPage" Click="Back"/>

 

后台需要重写OnNavigatedTo,因为我们需要一进入结果页面,就对传递进来的参数进行处理

复制代码
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.Parameter.GetType().Equals(typeof(User)))
            {
                User user = (User)e.Parameter;
                txtResult.Text = $"Name: {user.Name}  Age: {user.Age}  Weight: {user.Weight}";
            }
            else if (e.Parameter.GetType().Equals(typeof(string)))
            {
                txtResult.Text = $"Name: {e.Parameter.ToString()}";
            }

        }
复制代码

 

点击主页面的传递按钮,在结果页面就可以看到:

 

User对象被传递了过来

 

2. 利用全局变量传递

此方法不要parameter了,只需要在App.xaml.cs里面定义全局变量即可

public string g_string;
public User g_user = new User();

使用的时候么,前面加上(Application.Current as App).即可。

 

还是前面的例子,传递User

MainPage后台只需要写

复制代码
        private void PassObject(object sender, RoutedEventArgs e)
        {
            if (txtName.Text.Trim() == "" || txtAge.Text.Trim() == "" || txtWeight.Text.Trim() == "")
                return;

            User user = new User
            {
                Name = txtName.Text.Trim(),
                Age = Convert.ToInt32(txtAge.Text.Trim()),
                Weight = Convert.ToDouble(txtWeight.Text.Trim())
            };

            (Application.Current as App).g_user = user;//划重点
            Frame.Navigate(typeof(ResultPage));
复制代码

注意Navigate 不加参数了哦

在ResultPage里面写:

protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            User user = (Application.Current as App).g_user;
            txtResult.Text = $"Name: {user.Name}  Age: {user.Age}  Weight: {user.Weight}";

        }

即可。

 

posted @   猫叔Vincent  阅读(1932)  评论(5编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示