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