U gebruikt de ActionMessage van Caliburn, maar omdat u de Bootstrapper-klasse niet gebruikt om uw toepassing op te starten, is de DataContext van de MainView niet ingesteld op een instantie van het MainView-model. Als u de DataContext van de SearchTextBox tijdens runtime controleert, ziet u dat deze null is.
Hier is een reeks stappen die uw probleem kunnen oplossen (met behulp van uw gekoppelde voorbeeldproject)
Maak een klasse genaamd MyBootstrapper. Het zou er zo uit moeten zien
public class MyBootstrapper : Bootstrapper {}
Voeg je nieuwe bootstrapper toe aan de Resources-verzameling van de applicatie, zoals ik hieronder laat zien (App.xaml)
Niet zeker waarom, maar als de bootstrapper niet in mijn build is genest, wordt deze nooit geïnstantieerd wanneer App.InitializeComponent() wordt uitgevoerd ...
Wijzig App.xaml.cs om eenvoudig InitializeComponent uit te voeren. Merk op dat ik je build een beetje moest aanpassen om dit te laten werken ... InitializeComponent() is alleen gedefinieerd in het App.g.cs-bestand als je het geneste hulpmiddelendocument uit stap 2 hebt, of als je een x hebt: Naamkenmerk op App.xaml of misschien andere dingen ...
using System.Windows;
namespace WpfApplicationParadise
{
public partial class App : Application
{
public App()
{
InitializeComponent();
}
}
}
Tot slot, moet u de parens verwijderen zoals door Wallstreet Programmer werd gesuggereerd.
Deze stappen zouden ervoor moeten zorgen dat je App een instantboot opstart met je bootstrapper, die op zijn beurt het MainViewModel instantiseert als het rootviewmodel van je applicatie, en vervolgens een MainView maakt en zijn DataContext koppelt aan het MainViewModel. Op dat moment zou uw applicatie moeten werken zoals verwacht.