2016-11-09 8 views
0

受信しません。他の一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でメッセージが受信されない理由はありますか?

+0

なぜでキーストロークを処理しているが動作するはずである一方、 VM? – slugster

+0

それはちょうど動作trigerテストされている、メッセージは間違いなく送信されました。 –

答えて

0

タイプを登録する

NotificationMessage

ですがしかし、タイプを送ることが Messages.WebTab.NavigatingToPageArgs

は、タイプが同じ作り、それが

+0

ありがとう、私はこれを試してみました: MessengerInstance.Send(新しいNotificationMessage (新しいMessages.WebTab.NavigatingToPageArgs {UrlForNavigating = "http://stackoverflow.com/questions/11485897/viewmodel-doesnt-receive -message-in-mvvm-light "}、" bla bla ")); と動作します) –

関連する問題