在页面之间传递数据

时间:2014-08-13 21:11:31

标签: c# windows-phone

对不起,如果这听起来像是一个完全愚蠢的问题,但它确实让我感到难过!!

因此,应用程序由许多页面组成,这些页面从一个页面导航到另一个页面,允许用户操作数据。在第一页(PivotPage)上,数据被加载到类(bay9)中定义的List中。所有这一切都运行良好,我可以轻松地绑定数据并在它只是在一页上操作它。问题是我希望用户能够操纵或搜索此列表'从任何其他页面。

我所拥有的是基本课程;

class bay9
{
    public override string ToString()
    {
        return "Name: " + SetZone + "   ID: " + SetThermocouple;
    }



    public string setzone;

    public string SetZone
    {
        get { return setzone; }
        set { setzone = value; }
    }

    public string setthermocouple;

    public string SetThermocouple
    {
        get { return setthermocouple; }
        set { setthermocouple = value; }
    }


    public string setdata;

    public string SetData
    {
        get { return setdata; }
        set { setdata = value; }
    }

}

输入数据的基本页面;

public sealed partial class PivotPage : Page
{
    private NavigationHelper navigationHelper;
    private ObservableDictionary defaultViewModel = new ObservableDictionary();

    public PivotPage()
    {
        this.InitializeComponent();

        this.navigationHelper = new NavigationHelper(this);
        this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
        this.navigationHelper.SaveState += this.NavigationHelper_SaveState;

        Bay9 = new List<bay9>();


        AddBay9();
    }

    List<bay9> Bay9;
    public void AddBay9()
    {

        Bay9.Add(new bay9 { SetZone = "ZONE1C" });
        Bay9.Add(new bay9 { SetZone = "ZONE1A" });
        Bay9.Add(new bay9 { SetZone = "ZONE1R" });


        cvs9.Source = Bay9;
    }
}

和我想要访问上一页输入的数据的页面,但似乎不能这样做?

public sealed partial class RecorderPage : Page
{
    private NavigationHelper navigationHelper;
    private ObservableDictionary defaultViewModel = new ObservableDictionary();

    public RecorderPage()
    {
        this.InitializeComponent();

        this.navigationHelper = new NavigationHelper(this);
        this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
        this.navigationHelper.SaveState += this.NavigationHelper_SaveState;

        Bay9 = new List<bay9>();

        LoadThermocouples();
    }

    List<bay9> Bay9;



    private void NextPageButton(object sender, RoutedEventArgs e)
    {

        this.Frame.Navigate(typeof(MainPage));

    }





    void LoadThermocouples()
    {

        int i = 0;

        foreach (bay9 aPart in Bay9)
        {


            var textBlock = new TextBlock { Text = "header ", FontSize = 55 };

            var textBox = new TextBox { Name = i.ToString(), };

            ThermocoupleStackPanel.Children.Add(textBlock);

            ThermocoupleStackPanel.Children.Add(textBox);

            i++;
        }
    }
}

我认为问题在于再次声明Bay9 = new List<bay9>();但不知道我还需要做什么。现在它的列表是空的。

请您帮助我了解如何从此页面访问此列表:)

非常感谢

3 个答案:

答案 0 :(得分:2)

我认为处理此问题的典型方法是将Bay9存储在可从应用程序中的任何位置访问的ViewModel类中。请参阅this Stack Overflow questionthis article

在我自己的应用中,我已经在链接的Stack Overflow问题中使用了这项技术 - 使其成为App类的静态属性,这对我来说很好。

答案 1 :(得分:0)

尝试将class bay9更改为public static class bay9。这样,它就可以从应用程序的任何地方访问。

答案 2 :(得分:0)

最好的办法是看看Microsoft建议用于开发名为MVVM(model-view-viewmodel)的Windows Phone应用程序的设计模式,它允许您在整个应用程序中创建更好的数据绑定。

以下是通过MSDN提供的教程的链接:Implementing the Model-View-ViewModel pattern for Windows Phone 8