受信しません。他の一MVVMのviewmodelsの一つは、私がメッセージを送信しています1 MainViewModelでメッセージ
private void TextBoxKeyDownVMMethod(KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
MessengerInstance.Send<Messages.WebTab.NavigatingToPageArgs>(new NavigatingToPageArgs { UrlForNavigating = "http://stackoverflow.com/questions/11485897/viewmodel-doesnt-receive-message-in-mvvm-light" });
//GoToPageInSelectedTabVMCommand.Execute((object)null);
Keyboard.ClearFocus();
}
}
を私はそれを受けています:
public WebTabItemVievModel()
{
MessengerInstance.Register<NotificationMessage<Messages.WebTab.NavigatingToPageArgs>>(this, _MessageHandler_NavigatingToPage);
}
private void _MessageHandler_NavigatingToPage(NotificationMessage<NavigatingToPageArgs> args)
{
GoToPageCommand.Execute(args.Content.UrlForNavigating);
}
WebTabItemVievModelはのコンストラクタでのObservableCollectionとして作成されますMainViewModel、 このコレクションはタブコントロールのItemsSourceです
public MainViewModel()
{
WebTabItems = new ObservableCollection<WebTabItemVievModel>();
WebTabItemVievModel tabItem;
tabItem = ServiceLocator.Current.GetInstance<WebTabItemVievModel>();
tabItem.Header = "Empty tab";
WebTabItems.Add(tabItem);
tabItem = new WebTabItemVievModel { Header = "Empty tab" };
WebTabItems.Add(tabItem);
tabItem = new WebTabItemVievModel { Header = "Empty tab" };
WebTabItems.Add(tabItem);
tabItem = new WebTabItemVievModel() { AddNewTabOnTabHeaderClick =true};
WebTabItems.Add(tabItem);
}
WebTabItemVievModelは、可視化のための独自のユーザーコントロールを持っている、ウィッヒはMainWindow.xamlにリソース定義によってバインドされ:登録中
<Window.Resources>
<DataTemplate DataType="{x:Type vm:WebTabItemVievModel}" >
<v:WebTabItemContentViev></v:WebTabItemContentViev>
</DataTemplate>
</Window.Resources>
ロケータはすでに真のパラメータがあります。
SimpleIoc.Default.Register<WebTabItemVievModel>(true);
SimpleIoc.Default.Register<MainViewModel>(true);
WebTabItemVievModelsでメッセージが受信されない理由はありますか?
なぜでキーストロークを処理しているが動作するはずである一方、 VM? – slugster
それはちょうど動作trigerテストされている、メッセージは間違いなく送信されました。 –