【问题标题】:Passing elements between pages in C# Xaml在 C# Xaml 中的页面之间传递元素
【发布时间】:2016-11-13 08:29:57
【问题描述】:

首先我将按钮的内容从 MainPage 传递到 Menu2:

private void Button2Click(object sender, RoutedEventArgs args)
    {
        // Create PassData object
        PassData passData = new PassData();

        // Set the InitializeData property from the button's content
        passData.Data = firstElement.Content;

        // Pass that object to Navigate
        this.Frame.Navigate(typeof(Menu2), passData);

    }

然后我在 Menu2 页面中检索数据:

// pulling data from first page selection
    protected override void OnNavigatedTo(NavigationEventArgs args)
    {
        // Get the object passed as the second argument to Navigate
        PassData passData = args.Parameter as PassData;

        // Use that to initilize the button
        firstElement.Content = passData.Data;

        base.OnNavigatedTo(args);
    }

此时按钮的内容通过没有问题。

然后我想再次将该数据传递回 MainPage:

菜单2代码:

private void Button1Click(object sender, RoutedEventArgs args)
    {
        // Create PassData object
        PassData passData = new PassData();

        // Set the InitializeData property from the button's content
        passData.Data = firstElement.Content;

        // Pass that object to Navigate
        this.Frame.Navigate(typeof(MainPage), passData);

    }

我尝试在 MainPage 中检索数据:

// pulling data from Menu2's button
    protected override void OnNavigatedTo(NavigationEventArgs args)
    {
        // Get the object passed as the second argument to Navigate
        PassData passData = args.Parameter as PassData;

        // Use that to initilize the button
        firstElement.Content = passData.Data;

        base.OnNavigatedTo(args);
    }

此时我在 MainPage 的行上收到错误:

firstElement.Content = passData.Data;

错误提示:

Null Reference Exception, Object reference not set to an instance of an object

我做错了什么?

【问题讨论】:

  • 您的 firstElement 或 passData 对象为空。
  • 但是怎么会呢?既然已经被主页传递了,不应该分配数据吗?
  • 表示 passData 为空。但它应该包含 firstElement.Content 中的内容,对吧?

标签: c# xaml parameter-passing


【解决方案1】:

那么你加载的第一页是哪一个?

当您第一次加载时,passData 将为空。

我猜您正在使用 UWP,当您导航到 MainPage 时,您应该在文件 App.cs 中创建并传递 PassData() 作为参数。

【讨论】:

  • 我在单独的 cs 文件中使用类传递了一个 PassData。首先我加载 MainPage ,其中 passData 为空。然后我导航到 Menu2 并将 MainPage 的 firstElement.Content 分配给 PassData。然后在 Menu2 中检索它。由于在 Menu2 中,该页面中的 firstElement.Content 分配了 PassData 内容,因此我想将相同的数据传递回 MainPage。此时似乎 PassData 失去了 firstElement.Content 值。
  • 是否需要单独的 PassData() 将数据发送回 MainPage?
  • @paddy 你能粘贴你的 App.cs 吗?
  • 我没有在 app.cs 中包含任何内容
  • @paddy 所以当应用导航到 MainPage 时(在 MainPage 导航到 Menu2 之前),你的应用总是会得到 NullReferenceException
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多