2014-02-04 3 views
0

У меня есть сетевая услуга, которая предоставляет несколько пар ключ-значение. Коллекция огромна и доступные ключи меняются со временем. Моя цель - привязать эту коллекцию в Visual Studio 2013 или Blend, используя окно свойств в режиме разработки (или intellisense в XAML). Это, конечно, требует, чтобы объект клиентского сервиса каким-то образом был инициализирован в режиме разработки для подключения к службе и раскрытия ключей в качестве связующих свойств.Управление привязкой к динамическому набору пар ключ-значение

Я много искал «ObjectDataSource», но моя проблема в том, что я не могу динамически изменять свойства этого объекта.

Какой тип объекта я должен выбрать в качестве контекста данных? Как я могу заполнить его в режиме разработки?

Любые идеи или предложения относительно того, как это может быть реализовано, были бы замечательными.

ответ

0

Вы можете установить контекст данных для любого объекта - Вы получаете динамические обновления, если

Если ваша цель состоит в том, чтобы создать наблюдаемую словарь, взгляните на этот пост: http://blogs.microsoft.co.il/shimmy/2010/12/26/observabledictionarylttkey-tvaluegt-c/

Поставщик данных объекта может быть это источник данных, который установлен какой-либо объект тоже - динамические обновления будут происходить, если объект указан выше. Кроме того, вы можете декларативно установить значения objectDataSource в xaml - но это не похоже на то, что вы хотите сделать. Примечание. Вы не изменяете свойства источника данных объекта - вы изменяете объект, который он обертывает для вас.

Если вы хотите иметь возможность управлять выбранным элементом чего-то вроде списка (немного похожего на Winforms BindingSource) - посмотрите на ICollectionView (http://msdn.microsoft.com/en-us/library/system.componentmodel.icollectionview(v=vs.110).aspx), который может быть создан путем упаковки фактического источника данных (тот же наблюдаемые правила применяются для получения динамических обновлений) с помощью CollectionView (см. http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.getdefaultview(v=vs.110).aspx)

Так что, чтобы ответить на остальную часть вашего вопроса, одним из решений является создание наблюдаемой коллекции наблюдаемых объектов (обертывание пар значений ключа) и установка этого как ваш контекст данных (или установите его как источник объекта objectDataProvider и соответствующим образом привяжите ваш Xaml. Это не единственный способ, но быстрый Google покажет вам другие.

Режим

Edit Design для времени проектирования данных - посмотреть на использование флагов режима дизайна - пример здесь: 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

Я никогда на самом деле пытался время разработки, так что это все, что я получил!

Hth.

+0

Привет, Джей, я понимаю, как это будет работать во время выполнения, но моя проблема в том, что я хочу заполнить свой ObservableCollection парами ключ/значение в Visual Studio «Режим разработки». Я хочу иметь возможность выбирать среди клавиш в панели редактора/свойств WPF. – Chrille

+0

@Chrille Обновлен мой ответ с некоторыми ссылками на привязку данных времени разработки - это то, что я никогда не пробовал - так надейтесь, что это указывает на то, что вы направили направление. – Jay

Смежные вопросы