我有一个提供许多键值对的网络服务。该集合非常庞大,可用的密钥随着时间的推移而变化。我的目标是能够使用设计模式中的属性窗口(或XAML中的intellisense)在Visual Studio 2013或Blend中绑定到此集合。这当然要求服务客户端对象以某种方式在设计模式期间初始化以连接到服务并将密钥公开为可绑定属性。
我一直在搜索“ObjectDataSource”,但我的问题是我无法动态更改此对象的属性。
我应该选择哪种类型的对象作为我的数据上下文? 如何在设计模式下填充它?
关于如何实施这一点的任何想法或建议都会很棒。
答案 0 :(得分:0)
您可以将数据上下文设置为任何对象 - 如果
,您将获得动态更新该对象实现了INotifyPropertyChanged(http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx)
或是可观察的(如ObservableCollection<>(http://msdn.microsoft.com/en-us/library/ms668604(v=vs.110).aspx))。
如果你的目标是创建一个可观察的字典,请看一下这篇文章:http://blogs.microsoft.co.il/shimmy/2010/12/26/observabledictionarylttkey-tvaluegt-c/
对象数据提供程序也可以将其数据源设置为任何对象 - 如果对象如上所述,则会发生动态更新。此外,您可以声明性地在xaml中设置objectDataSource的值 - 但这似乎不是您想要做的事情。 注意:您不更改对象数据源的属性 - 您更改它为您包装的对象。
如果您希望能够控制所选项目的类似列表(有点像Winforms BindingSource) - 请查看ICollectionView(http://msdn.microsoft.com/en-us/library/system.componentmodel.icollectionview(v=vs.110).aspx),它可以通过包装您的实际数据来创建source(相同的可观察规则适用于获取动态更新)使用CollectionView(请参阅http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.getdefaultview(v=vs.110).aspx)
所以 - 为了回答你的其余问题,一个解决方案是创建一个可观察的可观察对象集合(包装你的键值对)并将其设置为你的数据上下文(或将其设置为你的objectDataProvider的源,并绑定你的相应的Xaml。这不是唯一的方法,但快速谷歌会告诉你其他人。
编辑设计模式 对于设计时数据 - 请查看使用设计模式标志 - 示例如下:http://www.arrangeactassert.com/how-to-use-designdata-to-populate-controls-with-design-time-data-in-silverlight-and-wpf/
(Silverlight设计时属性)列表:http://msdn.microsoft.com/en-us/library/ff602277%28v=vs.95%29.aspx
我从来没有真正尝试过设计时间的东西,所以这就是我的全部!
H个。