2011-05-08 14 views
7

Her görünümdePrism RequestNavigate çalışmıyor

public partial class View2 : UserControl, IRegionMemberLifetime, INavigationAware 
{ 

    public bool KeepAlive 
    { 
    get { return false; } 
    } 

    bool INavigationAware.IsNavigationTarget(NavigationContext navigationContext) 
    { 
    return true; 
    } 
    void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext) 
    { 
    // Intentionally not implemented. 
    } 
    void INavigationAware.OnNavigatedTo(NavigationContext navigationContext) 
    { 
    this.navigationJournal = navigationContext.NavigationService.Journal; 
    } 

} 

Initialize:

container.RegisterType<object, View1>("View1"); 
container.RegisterType<object, View2>("View2"); 

regionManager.RequestNavigate("Window1", new Uri("View1", UriKind.Relative)); 
regionManager.RequestNavigate("Window2", new Uri("View2", UriKind.Relative)); 

Geliştirici kılavuzunu takip ediyorum, görünüm varsa görünümü değiştirmiyor.

+0

Türlerinizi 'object' türüne karşı değil, taban arabirimlerine karşı kaydettirmiyor musunuz? Geliştirici kılavuzunda –

+2

, bu şekilde yazmak, hangi baz arabirimi bilmiyorum, IModule demek istiyor musunuz? – viewer20q

+0

Hangi geliştirici rehberini kullanıyorsunuz? –

cevap

9

Görünümün kap tarafından doldurulduğundan emin misiniz?

Ben RequestNavigate yöntem için bir geri arama vermenizi öneririm, böylece NavigationResult sokmak senin görüntüsü ne izlemek mümkün olacak: Ben IConfirmNavigateRequest uygulamak ve eğer gördük

regionManager.RequestNavigate 
(
    "Window1", 
    new Uri("View2", UriKind.Relative), 
    (NavigationResult nr) => 
    { 
     var error = nr.Error; 
     var result = nr.Result; 
     // put a breakpoint here and checkout what NavigationResult contains 
    } 
); 
+1

7 yıl sonra düşünüyorum ve bu cevabı verelim. Basit ve sorunu çözmek için bana yardımcı oldu, o zaman ben cevap veren kişi olduğumu anladım ... – Shimmy

2

continuetationCallback (true) çağrısı yapmazsanız, navigasyon sessizce başarısız olur.

Bu sizin durumunuz olmasa da, bunu Prism koduyla hata ayıklayarak çözdüm. Sorununuzu çözmek için bunu yapmanızı öneririm. İlgili her projede aşağıdaki referansları silin.

  • Microsoft.Practices.Prism
  • Microsoft.Practices.Prism.Interactivity
  • Microsoft.Practices.Prism.MefExtensions
  • Microsoft.Practices.Prism.UnityExtensions

Ardından eklemek PrismLibrary DeskTop, Silverlight veya Telefon dizininden (PRISM'yi kurduğunuz) projeler. Ardından bu projeleri referans alın. Yeni bir görünüm, IsNavigationTarget() yanlış yerine doğru dönmelidir oluşturulur ve bölgeye Eğer RequestNavigate() diyoruz her zaman eklenecek istiyorsanız

bool INavigationAware.IsNavigationTarget(NavigationContext navigationContext) => true; 

:

+0

Teşekkürler! Tam olarak benim sorunumdu, bir saat israf ettim. – Golvellius

İlgili konular