Xaml 将数据传递到另一页会导致值更改为null

Xaml 将数据传递到另一页会导致值更改为null,xaml,uwp,Xaml,Uwp,我一直在尝试获取主页的cartTitleList和cartPriceList,以将值移动到Page3 cartTitle1.Text和cartPrice1.Text中,但每次尝试时,Page3列表上的值都为空 我试过了 参数化构造函数 属性 方法 MainPage.CS(当前使用方法作为传输数据的方式) Frame.navigate(typeof())方法将导航到Page3的新实例,而不是您创建的实例。这就是为什么在Page3中会得到一个空值。您看到的Page3实例与您创建的实例不同 通常,我们

我一直在尝试获取主页的cartTitleList和cartPriceList,以将值移动到Page3 cartTitle1.Text和cartPrice1.Text中,但每次尝试时,Page3列表上的值都为空

我试过了
参数化构造函数
属性
方法

MainPage.CS(当前使用方法作为传输数据的方式)

Frame.navigate(typeof())
方法将导航到
Page3
的新实例,而不是您创建的实例。这就是为什么在
Page3
中会得到一个空值。您看到的
Page3
实例与您创建的实例不同

通常,我们使用在页面之间传递参数

您可以创建一个包含所有参数的小型类,并传递该类的实例,如下所示:

MainPage.xaml.cs

public sealed partial class Parameters
{
    public List<string> cartTitleList { get; set; }
    public List<string> cartPriceList { get; set; }
}

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    cartTitleList.Add("Test1");
    cartTitleList.Add("Test2");

    cartPriceList.Add("Test3");
    cartPriceList.Add("Test4");
    bool i = cartTitleList.Contains("Test1");
    if (i == true)
    {
         Page3 cartDetails = new Page3();
         //cartDetails.Datainput(cartTitleList, cartPriceList);
         Parameters myParameters = new Parameters();
         myParameters.cartPriceList = cartPriceList;
         myParameters.cartTitleList = cartTitleList;

         this.Frame.Navigate(typeof(Page3), myParameters);
    }
}
公共密封部分类参数
{
公共列表标题列表{get;set;}
公共列表cartPriceList{get;set;}
}
私有无效按钮\u单击\u 1(对象发送者,路由目标)
{
添加(“测试1”);
添加(“测试2”);
cartPriceList.Add(“Test3”);
cartPriceList.Add(“Test4”);
bool i=carttilelist.Contains(“Test1”);
如果(i==true)
{
Page3 cartDetails=新的Page3();
//cartDetails.Datainput(cartTitleList、cartPriceList);
参数myParameters=新参数();
myParameters.cartPriceList=cartPriceList;
myParameters.cartTitleList=cartTitleList;
this.Frame.Navigate(typeof(Page3),myParameters);
}
}
Page3.xaml.cs

static List<string> cartTitleListDisplay = new List<string>();
static List<string> cartPriceListDisplay = new List<string>();

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    var parameters = (Parameters)e.Parameter;
    cartTitleListDisplay = parameters.cartTitleList;
    cartPriceListDisplay = parameters.cartPriceList;
}

private void Back_Click(object sender, RoutedEventArgs e)
{
    BuyChange();
}

private void BuyChange()
{
    cartTitle1.Text = cartTitleListDisplay[0];
    cartPrice1.Text = cartPriceListDisplay[0];
}
静态列表cartTitleListDisplay=新列表();
静态列表cartPriceListDisplay=新列表();
受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e)
{
基地。导航到(e);
var参数=(参数)e.参数;
cartTitleListDisplay=parameters.cartTitleList;
cartPriceListDisplay=parameters.cartPriceList;
}
私有无效返回\u单击(对象发送者,路由目标e)
{
BuyChange();
}
私有变更()
{
cartTitle1.Text=cartTitleListDisplay[0];
cartPrice1.Text=cartPriceListDisplay[0];
}

这与UML有什么关系?看起来更像是某个Mickeysoft工具的错误报告?我删除了UMLtag@qwerty_so那是我的错我本来要写UWP的
        private void BuyChange()
        {
            cartTitle1.Text = cartTitleListDisplay[0];
            cartPrice1.Text = cartPriceListDisplay[0];
        }

public sealed partial class Parameters
{
    public List<string> cartTitleList { get; set; }
    public List<string> cartPriceList { get; set; }
}

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    cartTitleList.Add("Test1");
    cartTitleList.Add("Test2");

    cartPriceList.Add("Test3");
    cartPriceList.Add("Test4");
    bool i = cartTitleList.Contains("Test1");
    if (i == true)
    {
         Page3 cartDetails = new Page3();
         //cartDetails.Datainput(cartTitleList, cartPriceList);
         Parameters myParameters = new Parameters();
         myParameters.cartPriceList = cartPriceList;
         myParameters.cartTitleList = cartTitleList;

         this.Frame.Navigate(typeof(Page3), myParameters);
    }
}
static List<string> cartTitleListDisplay = new List<string>();
static List<string> cartPriceListDisplay = new List<string>();

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    var parameters = (Parameters)e.Parameter;
    cartTitleListDisplay = parameters.cartTitleList;
    cartPriceListDisplay = parameters.cartPriceList;
}

private void Back_Click(object sender, RoutedEventArgs e)
{
    BuyChange();
}

private void BuyChange()
{
    cartTitle1.Text = cartTitleListDisplay[0];
    cartPrice1.Text = cartPriceListDisplay[0];
}