Ich verwende das Caliburn.Micro-Framework. Auf seiner documentation page wird gesagt, dass:So binden Sie View- und ViewModel in Entwurfszeit, wenn ViewModel Parameter benötigt
Sie haben eine Desinger-Datacontext zu setzen und CM sagen seine Magie aus Ihrer Sicht XAML zu aktivieren:
<Window
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:CaliburnDesignTimeData.ViewModels"
xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro.Platform"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=vm:MainPageViewModel, IsDesignTimeCreatable=True}"
cal:Bind.AtDesignTime="True">
Damit dies funktioniert, das Ansichtsmodell muss eine haben Standardkonstruktor. Wenn dies nicht geeignet ist, können Sie auch einen ViewModelLocator für Ihre Design-Time-ViewModel-Erstellung verwenden.
Ich möchte mein ViewModel mit einem Parameter erstellt werden. Wie kann ich den ViewModelLocator verwenden?
Ich habe es schon gefunden, danke. Glauben Sie, dass es eine gute Idee ist, den IoC im ViewModel-Projekt zu definieren? – EngineerSpock
In dem Artikel instanziiert er einen neuen SimpleContainer und weist die generischen Delegaten GetInstance, GetAllInstances und BuildUp IoC den übereinstimmenden Methoden des neu erstellten SimpleContainer zu. Ich glaube, dass Sie den bereits eingerichteten IoC auf Ihrem AppBootstrapper wiederverwenden können (da dies innerhalb von Initialize() geschieht), wenn Sie keinen benutzerdefinierten IoC erstellen möchten. – Doom5