Все подходы к экспонированию данных времени разработки, которые я видел, состоят в создании двух ViewModels. Один для Design-Time и второй для среды исполнения.IOC и поддержка времени разработки в WPF
Но я чувствую, что это глупо. Зачем мне дублировать код? Почему я не могу полагаться на контейнер IoC, если я уже использую его в приложении?
Я просто хочу составить свой IoC во время разработки в нужное время, прежде чем WpfDesigner попытается разрешить соответствующий ViewModel.
Так что нам нужен способ инициализации на уровне сборки. Я нашел this thread on stackoverflow.
К сожалению, кажется, что, добавив следующий код в AssemblyInfo.cs не работает:
[assembly: DesignTimeBootstrapper]
[AttributeUsage(AttributeTargets.Assembly)]
class DesignTimeBootstrapperAttribute : Attribute {
public DesignTimeBootstrapperAttribute() {
File.AppendAllLines(@"F:\tmp\DesignTimeDebug.txt", new[] { "DesignTimeBootstrapperAttribute" });
var dep = new DependencyObject();
if (DesignerProperties.GetIsInDesignMode(dep)) {
Bootstrapper b = new Bootstrapper();
b.Start();
}
}
}
Я не вижу, что этот код никогда не называется.