在页面C#Xaml之间传递和返回数据

时间:2016-11-11 10:19:48

标签: c# data-binding parameter-passing

我正在关注Petzold的教程。但是,我无法让我的算法正常工作。

我创建了一个类,用于在两个页面之间传递数据:

public class PassData
{
   public object Data { set; get; }
}

然后,我将我的PassData对象包含为Navigate的第二个参数: (MainPage.xaml.cs中)

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

        // Set the InitializeData property from the ListBox
        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 = args;
    }

firstElement是我按钮的别名。

当我运行代码时,在MainPage上我单击ListBox项目,它被分配给firstElement.Content,然后我导航到Menu2页面,我取代按钮内容的所有内容是:{{1} }。

-----解决方案-----

我通过以下方式解决了问题:

在Menu2.xaml.cs而不是Windows.UI.Xaml.Navigation.NavigationEventArgs中,我放了

firstElement.Content = args;

1 个答案:

答案 0 :(得分:0)

在Menu2.xaml.cs而不是firstElement.Content = args;中,我放了

firstElement.Content = passData.Data;

            base.OnNavigatedTo(args);

这解决了问题,数据在两个页面之间传递。