Вы используете ActionMessage Caliburn, но, поскольку вы не используете его класс Bootstrapper для запуска вашего приложения, DataContext MainView не установлен на экземпляр MainViewModel.Если вы проверите DataContext в SearchTextBox во время выполнения, вы увидите, что он имеет значение null.
Вот серия шагов, которые могут решить вашу проблему (используя связанный пример проекта)
Создайте класс с именем MyBootstrapper.,Это должно выглядеть следующим образом:
public class MyBootstrapper : Bootstrapper<MainViewModel> {}
Добавьте свой новый загрузчик в коллекцию ресурсов приложения, как показано ниже (App.xaml)
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplicationParadise"
x:Class="WpfApplicationParadise.App">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:MyBootstrapper x:Key="bootstrapper" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Не знаю почему, ноесли загрузчик не вложен в мою сборку, он никогда не создается при запуске App.InitializeComponent () ...
Измените App.xaml.cs, чтобы просто запустить InitializeComponent.Обратите внимание, что мне пришлось немного настроить вашу сборку, чтобы заставить это работать ... InitializeComponent () определяется только в файле App.g.cs, если у вас есть словарь вложенных ресурсов из шага 2 или если у вас есть x:Атрибут имени в App.xaml или, возможно, другие вещи ...
using System.Windows;
namespace WpfApplicationParadise
{
public partial class App : Application
{
public App()
{
InitializeComponent();
}
}
}
Наконец, вам нужно удалить парены , как предложил Wallstreet Programmer.
Эти шагидолжно заставить ваше приложение создавать экземпляр вашего загрузчика, который, в свою очередь, создает MainViewModel как корневую модель представления вашего приложения, а затем создает MainView и подключает свой DataContext к MainViewModel.На этом этапе ваше приложение должно работать как положено.