从不同的视图获取longListSelector源

时间:2014-04-08 17:19:41

标签: c# list windows-phone-8 datasource longlistselector

我跟随此示例:http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj244365%28v=vs.105%29.aspx

当我第一次启动应用程序时,我想将某些项目添加到列表中,这些项目将无法删除。所以在App.xaml.cs中我有:

private void Application_Launching(object sender, LaunchingEventArgs e)
{
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
    List<MyConnection.locationList.locations> source = new List<MyConnection.locationList.locations>();

    if (!settings.Contains("firstrun"))
    {
        source.Add(new MyConnection.locationList.locations("Dulles, VA"));
        source.Add(new MyConnection.locationList.locations("Dulles, VA (Q)"));
    }
}

在我的locationList.xaml.cs(这是longListSelector的位置)我有:

public locationList()
{
    InitializeComponent();

    List<locationSelectorClass.locationChoice<locations>> DataSource = locationSelectorClass.locationChoice<locations>.CreateGroups(source,
        System.Threading.Thread.CurrentThread.CurrentUICulture,
        (locations s) => { return s.LastName; }, true);
}

public class locations
{
    public string locName
    {
        get;
        set;
    }

    public locations(string locName)
    {
        this.locName = locName;
    }
}

显然,它说它无法找到源代码,所以如何指示它查看App.xaml.cs或者如何在源代码中调用源代码&#39; #39;已被创建?

我已经尝试过&#34; MyConnection.App.xxxx&#34;但它并没有给我一个选择#34; source&#34;。

2 个答案:

答案 0 :(得分:2)

如果您想使用Myconnection.App.xxxx

你必须公开来源,如果你想获得你必须写的信息

List<MyConnection.locationList.locations> source;
private void Application_Launching(object sender, LaunchingEventArgs e)
    {

        IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
        source = new List<MyConnection.locationList.locations>();

        if (!settings.Contains("firstrun"))
        {
            source.Add(new MyConnection.locationList.locations("Dulles, VA"));
            source.Add(new MyConnection.locationList.locations("Dulles, VA (Q)"));
        }
}

现在您可以获取信息。然而,使用静力学并不总是最好的方法。这意味着您可以在locationlist()构造函数中进行搜索。 或者您可以通过导航解析一些信息。但是,对于第一个示例,您建议的方法可以看到代码,或者在构造函数中加载信息是最好的。

<强>附加

如果要在列表中添加/删除条目并在GUI中显示它们,则应使用ObservableCollection而不是List。

答案 1 :(得分:1)

您不必在应用程序的Application_Launching事件中执行此操作。您可以在视图/控件的构造函数中执行此操作。所以你可以直接访问它。

但是,如果您想这样做 - 那么一旦您创建了列表 - 将其保存到IsolatedStorageSettings然后在您的控件中将其恢复到新对象中。在那里,您可以访问列表和位置列表。如果您碰巧使用绑定,那么在控件的构造函数中,您还必须指定this.DataContext = this; - 以便它知道在哪里查找您的位置列表。

如果您使用的是MVVM,那么您将指定viewmodel作为您的datacontext,并从您的viewmodel中的IsolatedStorageSettings获取位置列表。