나는 다음과 같은 문제가 있습니다MVVM 빛 캐스팅 메시지
public class NavigateAndBroadcastAction : NavigateToPageAction
{
protected override void Invoke(object parameter)
{
base.Invoke(parameter);
Messenger.Default.Send<NavigatingMessage<ViewModelBase>>(new NavigatingMessage<ViewModelBase>(this, PassedObject), NavigationToken);
}
public ViewModelBase PassedObject
{
get { return (ViewModelBase)GetValue(PassedObjectProperty); }
set { SetValue(PassedObjectProperty, value); }
}
// Using a DependencyProperty as the backing store for PassedObject. This enables animation, styling, binding, etc...
public static readonly DependencyProperty PassedObjectProperty = DependencyProperty.Register("PassedObject", typeof(ViewModelBase), typeof(NavigateAndBroadcastAction), new PropertyMetadata(null));
...
}
그것은 기본적으로 (또한 혼합에서 사용 가능) NavigateToPageAction를 사용하지만 나 또한 뷰 모델 객체를 (I 목록 페이지에서를 탐색하는 데 사용할 전달할 수 있도록 지원을 세부 사항 페이지 및 선택된 개체를 전달할 수)
XAML은 다음과 같이 보일 것이다:합니다 (PassedObject 바인딩 ViewModelBase에서 상속 DetailViewModel의 인스턴스)
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<b:NavigateAndBroadcastAction TargetPage="/View/SubjectDetailPage.xaml" NavigationToken="SubjectDetailNavigationToken" PassedObject="{Binding}" />
</i:EventTrigger>
</i:Interaction.Triggers>
이다
이제 메시지를 등록하고 싶습니다 :
Messenger.Default.Register<NavigatingMessage<DetailViewModel>>(this, NavigationToken, true, Action);
하지만 그게 효과가 없습니다. 작동하는 것은 NavigatingMessage<ViewModelBase>
에 등록한 다음받은 메시지를 NavigatingMessage<DetailViewModel>
으로 전송하는 것입니다. 그 주위에 방법이 있습니까?
메신저가 전송되는 실제 개체 유형을 감지하고 해당 유형에 대해 등록 된 개체로 올바르게 배달되도록 수행 할 수 있습니까?
왜 작동하지 않습니까? 컴파일 오류가 발생합니까? 예외? –
아니요, 간단한 메시지는 배달되지 않습니다. –
올바른 유형의 메시지를 보낼 수 없습니까? –