Windows phone 8 使用可观察集合从Linq数据库绑定数据-WP8

Windows phone 8 使用可观察集合从Linq数据库绑定数据-WP8,windows-phone-8,linq-to-sql,observablecollection,Windows Phone 8,Linq To Sql,Observablecollection,我正在使用linq将一些数据保存到数据库中。我有一个DAO类,我在其中放置了所有CRUD方法,还有一个类定义了我的表及其列 [Table(Name = "CONTACTS")] public class UserContacts { private int _id; [Column(Name = "ID", IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, AutoSync = AutoSync.OnIn

我正在使用linq将一些数据保存到数据库中。我有一个DAO类,我在其中放置了所有CRUD方法,还有一个类定义了我的表及其列

[Table(Name = "CONTACTS")]
public class UserContacts
{
    private int _id;

    [Column(Name = "ID", IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, AutoSync = AutoSync.OnInsert)]
    public int ID
    {
        get { return _id; }
        set { _id = value; }
    }

    private string _name;

    [Column(Name = "NAME", CanBeNull = false)]
    public string NAME
    {
        get { return _name; }
        set { _name = value; }
    }

    private string _number;

    [Column(Name = "NUMBER", CanBeNull = false)]
    public string NUMBER
    {
        get { return _number; }
        set { _number = value; }
    }
}
刀类

public class DAOUserContacts
{
    public IList<UserContacts> list = new List<UserContacts>();

    public IList<UserContacts> GetData()
    {
        try
        {
            using (DataBaseContext db = new DataBaseContext(DataBaseContext.ConnectionString))
            {
                list = (from info in db.UserContacts orderby info.COLUMN_NAME ascending select info).ToList();
            }
            return list;
        }
        catch (Exception)
        {
            return null;
        }
    }

    // Other methods
}
Main.xaml

<phone:LongListSelector x:Name="llsContacts" ItemsSource="{Binding}" >
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <ListBoxItem local:TiltEffect.IsTiltEnabled="true">
                <Grid Margin="0" >
                    <TextBlock Text="{Binding NAME}" FontFamily="Segoe WP" FontSize="28" Margin="77,0,0,0" />
                    <TextBlock Text="{Binding NUMBER}" FontFamily="Segoe WP Light" FontSize="17" Margin="77,33,0,0"/>
                </Grid>
            </ListBoxItem>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

我在互联网上做了一个研究,发现了关于可观察的收集,我想使用它。我阅读这篇文章是为了了解它是如何工作的,但我仍然有一些疑问

在本文中,创建了一个从INotifyPropertyChanged继承的雇员和一个从ObservableCollection继承的雇员

在我的例子中,我希望我的列表(在xaml上)总是显示数据库中的内容

从INotifyPropertyChanged继承我的用户联系人可以吗?因为这个类声明了一个表

我的类应该继承自ObservaleCollection吗?或者只是my GetData()返回一个ObservableCollection而不是列表

还有一件事。。有一个按钮,当用户按下时,更新数据库(搜索设备上的所有联系人,从数据库中删除手机中删除的内容,并将手机中添加的内容添加到数据库)

使用ObservableCollection,当联系人搜索完成并且我的数据库被更新时,我应该调用一些东西来更新xaml上的LongListSelector吗?或者在数据库更新之后,LongListSelector也会自动更新


感谢…

用户viewmodel分配数据上下文并将xaml端的可观察集合分配为绑定。并且viewmodel应该具有可观察集合,您可以使用该集合进行绑定。如果您对集合进行了任何更改,则会自动更新longlistselector。
每次都应该根据数据库的更改来更改集合。

我不熟悉ViewModel。我应该这样做吗?但我的应用程序中有更多的页面,我的主应用程序中有更多的内容。当我使用ViewModel时,我的整个应用程序应该使用它吗?或者我可以只为我想要的目的使用它吗?你可以在任何地方使用,我的意思是,你甚至可以使用单个页面。它非常简单而且很好。因为我不熟悉这个,我必须更改很多东西来实现这个更改,我不喜欢使用ViewModel。。。是否有其他方法仅对联系人列表使用ObservableCollection?
<phone:LongListSelector x:Name="llsContacts" ItemsSource="{Binding}" >
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <ListBoxItem local:TiltEffect.IsTiltEnabled="true">
                <Grid Margin="0" >
                    <TextBlock Text="{Binding NAME}" FontFamily="Segoe WP" FontSize="28" Margin="77,0,0,0" />
                    <TextBlock Text="{Binding NUMBER}" FontFamily="Segoe WP Light" FontSize="17" Margin="77,33,0,0"/>
                </Grid>
            </ListBoxItem>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>