Рассмотрим следующий сценарий:
WPF view:
d:DataContext="{d:DesignInstance vm:DesignViewModel, IsDesignTimeCreatable=True}"
ViewModel находится в отдельном проекте c #:
internal class DesignViewModel : ViewModel
{ /* create demo data in ctor */ }
ViewModel имеет эту запись в AssemblyInfo:
[assembly: InternalsVisibleTo("WPF.Demo.View")]
Сообщение об ошибке в XAML Designer:
- Имя «DesignViewModel» не существует в пространстве имен «WPF.Demo.View».
Замечания:
- Все работает нормально, если я сделаю DesignViewModel общедоступным, а не внутренним. Но я бы хотел, чтобы это было внутренним, поскольку внешние потребители действительно не должны беспокоиться о времени разработки.
- Все работает нормально, если я перемещаю DesignViewModel в ту же сборку, которая содержит вид. Но я бы хотел разделить view и ViewModel.
- InternalsVisibleTo установлен правильно, потому что я могу получить к нему доступ из кода в представлении.
Вопрос: Как я могу установить d: DataContext для внутреннего класса другой сборки?