C# WPF数据绑定:数据库还是对象?
我正在尝试创建以下内容: Tag1具有对象的有序列表:O1、O3、O2。 Tag2具有对象的有序列表:O1,O4 每次单击标记时,我都希望看到对象列表。因此,单击Tag1将在列表框中显示:C# WPF数据绑定:数据库还是对象?,c#,wpf,database,data-binding,object,C#,Wpf,Database,Data Binding,Object,我正在尝试创建以下内容: Tag1具有对象的有序列表:O1、O3、O2。 Tag2具有对象的有序列表:O1,O4 每次单击标记时,我都希望看到对象列表。因此,单击Tag1将在列表框中显示: O1 臭氧 氧气 但是我想保持自动更新,这样每次我编辑或添加/删除对象时它都会自动更新(我想我需要实现类似接口INotifyCollectionChanged和INotifyPropertyChanged?) 我可以使用一个数据库,让表Tag、Object和TagObject,最后一个表带有TagID和O
- O1
- 臭氧
- 氧气
INotifyCollectionChanged
和INotifyPropertyChanged
?)
我可以使用一个数据库,让表Tag、Object和TagObject,最后一个表带有TagID和ObjectID。但我也希望避免使用数据库,因为它是一个桌面应用程序
我也可以使用像ObservableCollections
这样的对象,但是我有一个问题,就是有重复的对象。我可以使用对象的引用,但它会变得混乱
有人对如何做到这一点有什么建议吗
谢谢。一个选项是创建包含数据集(System.Data命名空间)的对象。在数据集中,它将有3个表,这些表将使用定义的外键进行链接,就像在数据库中一样。如果需要的话,以后可以将它们存储到XML中 然后,您的对象将必须公开一个可以设置为datacontext并绑定的dataview
在代码中编辑数据集然后更新屏幕,编辑屏幕将更新数据集。将控制更新数据的所有逻辑移出WPF页面,并移入另一个类,该类在WPF页面更改时将新数据推入WPF页面,而不是WPF从对象中拉出数据 下面是一些示例代码:
class WpfPage
{
public List OrderedListForTag1 { set { /* whatever GUI binding code you need to deal with the new list for tag 1 */ }
public List OrderedListForTag2 { set { /* whatever GUI binding code you need to deal with the new list for tag 2*/ }
}
class WpfPresenter
{
WpfPage thePage;
public void Tag1Selected()
{
//Calculate changes to 01, 02, 04 etcetce
//If changed, update the page
thePage.OrderedListForTag1 = //new list of objects
}
}
这是GUI构造中非常常见的模型-视图-控制器模式之一。这涵盖了这些概念。谢谢你,约翰。但是数据集没有实现ICollectionChanged。当我向一个表中添加一行时,屏幕是否会更新?尽管看起来很奇怪,而且即使它没有实现ICollectionChanged,它也能工作。我想这是因为它不是一个集合,而是一个基于XML的对象。