2016-03-24 20 views
-1

Bir Hub Öğe'ye sahibim ve bu öğeleri bir göbek kısmındaki bir dokunuşla/tıklatmayla gezinmek istiyorum. HubSection-Elements tıklanamaz olduğundan (sadece "MoreHeader" bağlantısını üreten "SectionHeaderClick" aracılığıyla), GridView'ı tıklanabilir yaptık. benim ViewModel içindeXAML içinde büyükbabalık öğeyi alın

<Frame x:Name="frame"> 
    <Hub VerticalAlignment="Center" HorizontalAlignment="Center" > 
    <HubSection Width="250" x:Name="section1" IsHeaderInteractive="True" > 
        <DataTemplate> 
         <GridView IsItemClickEnabled="True" ItemClick="{x:Bind MainPageVM.click}"> 
          <RelativePanel> 
           <Image x:Name="image" Source="Assets/1.png" Width="Auto" Height="250" /> 
           <TextBlock x:Name="page1" Text="page1" /> 
          </RelativePanel> 
         </GridView> 
        </DataTemplate> 
       </HubSection> 

       //.... 
     </Hub>    
</Frame> 

"tıklayın" metodu çerçeve Böylece temelde bir MVVM tarzı çerçeve elemanı erişmek zorunda

public void hubClick(object sender, ItemClickEventArgs e) 
{ 
    GridView gridview = sender as GridView; 
    // "GrandGrandParent" equivalent ? 
    Frame frame = gridview.GrandGrandParent; 
    frame.Navigate(typeof(View.page1));   
} 

Page1 gidin gerekir. Çerçeveye nasıl erişebilirim? Eğer olay VisualTreeHelper yöntem GetParent() kullanabilir

cevap

0

İşte

bağlantı GetParent

var ebeveyn = VisualTreeHelper.GetParent (eleman) 'dir;

+0

Fakat sorun şu ki, "getParent" bana "DataTemplate" öğesini verir, ebeveyn olmayan "frame" öğesine ihtiyacım var. – inix42

+0

İstediğiniz elemanı – Archana

+0

elde edinceye kadar bu yöntemi tekrar tekrar arayın Bu genel gibi genel türden bir özyinelemeli işlev yazabilirsiniz GetParent (öğe) {var parent = VisualTreeHelper.GetParent(); if (parent T) {return parrnt } else {GetParent (ebeveyn)} – Archana

0

MVVM deseninde, genellikle bir gezinme hizmeti arabirimine sarılmış çerçeveyi görünüm modeline geçirerek görünüm model katmanından görünüm katmanına erişmeden yapabileceğiniz bir görünüm model katmanından gezinebilirsiniz. Eğer gerçekte birim testi gibi şeyler yapmak için MVVM desenini kullanıyorsanız. Cihaz testi gezinmeyi planlamıyorsanız, genellikle uygulama sınıfındaki çerçevenize işaret eden bir statik özellik gösterebilirsiniz.