Привязка данных Silverlight к объектам CLR в смеси - PullRequest
0 голосов
/ 05 мая 2009

Мне нравится функция в Blend, где вы можете настроить привязку данных к объектам CLR и создать свой элемент управления / страницу Silverlight. Моя проблема заключается в создании пользовательского элемента управления, который будет использоваться в качестве DataTemplate. В Blend все отлично работает, но только во время разработки. Проблема в том, что когда я редактирую элемент управления в Blend и связываю, скажем, текстовое поле со свойством объекта CLR, он дает мне следующее:

Text="{Binding Mode=OneWay, Path=TestAccount.Name, Source={StaticResource TestDataDS}}"

Но когда я готов запустить приложение и использовать этот пользовательский элемент управления в шаблоне данных, скажем, в виде списка, мне нужно, чтобы он выглядел так:

Text="{Binding Mode=OneWay, Path=Name}"

Как я могу использовать изящную привязку к дизайну в Belnd, но не нужно трогать / искать и заменять все эти привязки, когда я буду готов запустить проект? Я ищу подход, который будет работать как во время разработки, так и во время выполнения.

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 июля 2009

Если вы используете смесь 2, я рекомендую вам взглянуть на пост в блоге Jonas Follesoe о времени разработки / времени выполнения , в котором используется внедрение зависимостей.

Если вам повезло использовать Blend 3, тогда проверьте это

Когда вы устанавливаете привязки в blend, доступна ли вкладка «Явный контекст данных»?

0 голосов
/ 06 мая 2009

Чтобы создать привязку данных к объекту CLR в Expression Blend, вам не нужно использовать вкладку «DataField» диалогового окна «Создать привязку данных». На самом деле, делать это таким образом очень редко.

Использование пользовательского выражения пути является наиболее распространенным способом. Просто установите флажок «Использовать выражение собственного пути», а затем введите имя свойства, к которому вы хотите привязать. Если вы оставите контекст данных неуказанным, привязка данных будет преобразована в путь, который вы указали для любого объекта, который является DataContext.

Если вы хотите установить время разработки DataContext, вы можете сделать это, установив свойство d: DataContext, убедившись в правильном определении xmlns: d = "..."

...