CaliburnのActionMessageを使用していますが、Bootstrapperクラスを使用してアプリケーションを起動しないため、MainViewのDataContextはMainViewModelのインスタンスに設定されていません。実行時にSearchTextBoxのDataContextをチェックすると、nullであることがわかります。
ここでは、問題を解決するための一連の手順を示します(リンクされたサンプルプロジェクトを使用)
MyBootstrapperというクラスを作成します。それはこのように見えるはずです
public class MyBootstrapper : Bootstrapper {}
新しいブートストラップをアプリケーションのリソースコレクションに追加します(下に示すように(App.xaml)
理由はわかりませんが、ブートストラップが自分のビルドにネストされていないと、App.InitializeComponent()が実行されたときにインスタンス化されることはありません。
App.xaml.csを単にInitializeComponentを実行するように変更します。これを動作させるためにビルドをちょっと微調整しなければならないことに注意してください... InitializeComponent()は、ステップ2のネストされたリソース辞書がある場合、またはx: App.xamlの名前属性、またはおそらく他のもの...
using System.Windows;
namespace WpfApplicationParadise
{
public partial class App : Application
{
public App()
{
InitializeComponent();
}
}
}
最後に、Wallstreet Programmerが提案したとおり、括弧を削除する必要があります。
これらの手順を実行すると、アプリケーションがブートストラップをインスタンス化し、アプリケーションのルートビューモデルとしてMainViewModelをインスタンス化し、MainViewを作成してDataViewextをMainViewModelに接続する必要があります。その時点で、アプリケーションは期待どおりに動作するはずです。