Данные времени проектирования в WPF / Silverlight - как правильно использовать классы-оболочки?

Я сталкиваюсь с проблемой наилучшей практики "поддержки времени проектирования". Я использую PRISM, и мои объекты создаются DI-контейнером. Давайте предположим следующий простой сценарий:

У меня есть рабочий процесс объекта. Этот рабочий процесс имеет несколько свойств, и существует WorkflowProvider, который предоставляет список рабочих процессов.

Если я создаю ListView, у меня нет проблем. Я использую объект MainApplication в качестве контекста данных времени разработки, и мой список привязывается к свойству "WorkflowList". В моем живом приложении я могу установить контекст данных для соответствующей реализации.

Но я не знаю, как работать с одним представлением рабочего процесса!

Обычно я бы создал объект рабочего процесса как контекст данных времени разработки. Но мой объект рабочего процесса не может быть создан сам по себе (с пустым конструктором), он должен быть свойством, например, моего WorkflowProvider. Итак, один подход, который я использовал в прошлом, был такой:

  • Написать фиктивный подкласс для рабочего процесса
  • В пустом конструкторе манекена получите "реальный рабочий процесс"
  • Присвойте все свойства "реального рабочего процесса" свойствам моего фиктивного класса
  • Используйте экземпляр фиктивного рабочего процесса в моем представлении времени разработки

Единственная причина этого заключается в том, что я не знаю, как установить контекст данных времени разработки для свойства, а не для объекта. Это возможно, или есть какой-то другой способ, который имеет смысл. Чтобы уточнить, я знаю, что могу связать, например, свою сетку в моем "представлении подробностей рабочего процесса" со свойством, но тогда я не смог бы использовать представление подробностей без изменений в качестве DataTemplate в моем представлении списка. Я надеюсь, у вас есть моя проблема:-)

Крис

1 ответ

Решение

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

d: DataContext = "{Binding WorkflowProvider.CurrentWorkflow}"

делает трюк, и будет игнорироваться в сценариях в реальном времени...

Другие вопросы по тегам