2016-04-02 17 views
0

ListView ürününe tıklandığında yeni bir sayfaya gitmek istiyorum. XAML'i (Davranışları kullanarak) takip ediyorum. İşteNavigasyonlu CallMethodAction birden fazla gezinme aramasına neden oluyor

public MyPage1() 
{ 
    this.InitializeComponent(); 
    NavigationCacheMode = NavigationCacheMode.Required;  
} 

benim SubredditTapped bir yöntem vardır: şu şekildedir:

<ListView Grid.Row="1" ItemsSource="{Binding Subreddits}" Margin="-10,20,0,0" SelectionMode="None" IsItemClickEnabled="True"> 
    <Interactivity:Interaction.Behaviors> 
     <Core:EventTriggerBehavior EventName="ItemClick"> 
      <Core:CallMethodAction TargetObject="{Binding Mode=OneWay}" MethodName="SubredditTapped"/> 
     </Core:EventTriggerBehavior> 
    </Interactivity:Interaction.Behaviors> 
</ListView> 

Sayfamda önbelleğe sağladı ben ilk kez bir öğe dokunduğunuzda, Şimdi

public void SubredditTapped(object sender, object parameter) 
{ 
    var args = parameter as Windows.UI.Xaml.Controls.ItemClickEventArgs; 
    var clickedItem = args.ClickedItem as Subreddit; 
    string navigationParamName = "Subreddit"; 
    BootStrapper.Current.SessionState[navigationParamName] = clickedItem; 
    BootStrapper.Current.NavigationService.Navigate(typeof(MyPage2), navigationParamName); 
    return;   
} 

, çerçeve gider MyPage2 beklendiği gibi. MyPage1'a (arka tuşunu kullanarak) dönüp tekrar MyPage2'a (bir öğeye dokunarak) giderken SubredditTapped yöntemi iki kez çağrılır. Bu sayı, ileri geri giderken artmaya devam ediyor.
MyPage1 üzerinde önbellek devre dışı bırakıldığında, bu sorundan kurtulduğundan,yönteminin her seferinde MyPage1'a yönlendirildiği yöntem listesine eklendiğinden şüpheleniyorum. Bunun olmasını nasıl engellerim? MVVM'yi kırmadan bunu yapmanın doğru yolu nedir?

Düzenleme: Davranışlar'daki hata SDK, daha yeni sürümlerde düzeltilmiştir. Yani bu işe yarıyor.

cevap

0

ViewModel'de, Altreddits var, SelectedSubreddit için Subreddit türünün bir özelliğini oluşturun ve ListBox'un SelectedItem öğesini 2 yollu bağlantıyla bu yeni özelliğe bağlayın. Ardından yeni mülkün setterinde (bir liste öğesi seçildiğinde çağrılacak) oradaki yöntemi arayabilirsiniz.

+0

SDK'daki hata düzeltilse de, bu yanıt yine de bir çözüm sunar - bu da sorulmuştur. – akshay2000

İlgili konular