C# 将控件绑定到键值对的动态集合

C# 将控件绑定到键值对的动态集合,c#,wpf,datasource,visual-studio-2013,blend,C#,Wpf,Datasource,Visual Studio 2013,Blend,我有一个提供许多键值对的网络服务。收藏量巨大,可用的钥匙随着时间的推移而变化。我的目标是能够在Visual Studio 2013中或在设计模式下使用属性窗口(或XAML中的intellisense)在Blend中绑定到此集合。当然,这需要在设计模式期间以某种方式初始化服务客户机对象,以连接到服务并将密钥作为可绑定属性公开 我已经搜索了很多关于“ObjectDataSource”的内容,但我的问题是我无法动态更改此对象的属性 我应该选择什么类型的对象作为数据上下文? 如何在设计模式期间填充它 任

我有一个提供许多键值对的网络服务。收藏量巨大,可用的钥匙随着时间的推移而变化。我的目标是能够在Visual Studio 2013中或在设计模式下使用属性窗口(或XAML中的intellisense)在Blend中绑定到此集合。当然,这需要在设计模式期间以某种方式初始化服务客户机对象,以连接到服务并将密钥作为可绑定属性公开

我已经搜索了很多关于“ObjectDataSource”的内容,但我的问题是我无法动态更改此对象的属性

我应该选择什么类型的对象作为数据上下文? 如何在设计模式期间填充它


任何关于如何实现这一点的想法或建议都将是非常好的。

您可以将数据上下文设置为任何对象-如果

  • 对象实现INotifyPropertyChanged()

  • 或者是可观察的(比如ObservableCollection())

如果您的目标是创建一个可观察的词典,请查看以下帖子:

对象数据提供程序也可以将其数据源设置为任何对象-如果对象如上所述,则会发生动态更新。此外,您可以在xaml中声明性地设置objectDataSource的值,但这似乎不是您想要做的事情。 注意:您不会更改对象数据源的属性-您会更改它为您包装的对象

如果希望能够控制列表(有点像Winforms BindingSource)之类的选定项,请查看ICollectionView(),它可以通过使用CollectionView包装实际数据源(相同的可观察规则适用于获取动态更新)来创建(请参阅)

因此,为了回答您的其余问题,一个解决方案是创建一个可观察对象的可观察集合(包装您的键值对),并将其设置为您的数据上下文(或将其设置为objectDataProvider的源,并相应地绑定Xaml)。这不是唯一的方法,但快速的google将向您展示其他方法

编辑设计模式 对于设计时数据-查看使用设计模式标志-示例如下:

(Silverlight设计时属性)列表:

我从来没有真正尝试过设计时的东西,所以我只有这些


Hth.

嗨,Jay,我知道这在运行时是如何工作的,但我的问题是我想在Visual Studio“设计模式”中用键/值对填充我的ObservableCollection。我希望能够在WPF编辑器/属性面板中的键中进行选择。@Chrille用一些设计时数据绑定链接更新了我的答案-这是我从未尝试过的东西-希望这能为您指明正确的方向。