2015-08-27 19 views
6

Şu anda bir Map içindeki birkaç Usercontrol nesnesini içeren bir UWP uygulaması geliştiriyorum (Windows.UI.Xaml.Navigation'u kullanarak ).UWP Bir nesneye Usercontrol ile sayfa navigasyon için Çerçeve Erişimi?

Bu Usercontrol nesnelerinde, bazen kullanıcının nesnelerdeki bir düğmeye basabilmesini ve yeni bir sayfaya alınabilmesini isterim. Tek sorun, kullanabilmek için sayfanın Çerçevesine erişemiyorum.

yöntemi. Bunu nasıl yaparım ve/veya başka alternatifler var mı? Günün çoğunda takıldım!

Sunduğunuz her türlü yardım için şimdiden teşekkür ederiz!

cevap

7

Sayfanın kendi kendine gitmesine izin verebiliriz. Özel bir kullanıcı denetiminizdeki bir olayı tanımlayın ve etkinliği ana sayfasından (sayfa) dinleyin.

Örnek olarak aşağıdaki atın:

  1. özel kullanıcı denetimi oluşturma ve test amaçlı üzerine bir düğme koydu.
  2. Test düğmesinin tıklama olayında, üst sayfa gezinmek için etkinliği kaldırın.
  3. Üst sayfada, UserControl olayını dinleyin ve Frame.Navigate öğesini çağırın.

MyControl en Xaml:

<UserControl 
x:Class="App6.MyControl" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:App6" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
d:DesignHeight="300" 
d:DesignWidth="400"> 

<Grid> 
    <Button x:Name="testbtn" Margin="168,134,0,134" Click="testbtn_Click">test</Button> 
</Grid> 
</UserControl> 

MyControl en CodeBehind:

public sealed partial class MyControl : UserControl 
{ 

    public delegate void MyEventHandler(object source, EventArgs e); 

    public event MyEventHandler OnNavigateParentReady; 

    public MyControl() 
    { 
     this.InitializeComponent(); 
    } 

    private void testbtn_Click(object sender, RoutedEventArgs e) 
    { 
     OnNavigateParentReady(this, null); 
    } 


} 

gidin MainPage secondpage gerekenler: Geçerli Pencere adlı den Frame bir başvuru alabilir

public MainPage() 
    { 
     this.InitializeComponent(); 

     myControl.OnNavigateParentReady += myControl_OnNavigateParentReady; 
    } 

    private void MyControl_OnNavigateParentReady(object source, EventArgs e) 
    { 
     Frame.Navigate(typeof(SecondPage)); 
    } 
+0

Fantastic! Bunun için teşekkür ederim. Bir çekicilik gibi çalıştı. – kgyts

+0

OnNavigateParentReady'de (boş, null) bir nullpointer alıyorum; – Evilunclebill

+1

"Genel olay" ı "public static olayı" olarak değiştirmem gerekiyordu, böylece bu çözümü bir "GridView" içinde bir "GridView" içinde bir "GridView.ItemTemplate" içinde bir "DataTemplate" içinde bir "UserControl" içinde kullanabiliyordum Bir 'Sayfa' içinde ... Harika bir çözüm için teşekkürler. – dav1dsm1th

0

İçerik. denemede arkasında kullanıcı denetiminin kodu :

Frame navigationFrame = Window.Current.Content as Frame; 
navigationFrame.Navigate(typeof([page])); 
0

Veya, Cast =>

((Çerçeve) Window.Current.Content) .Navigate (typeof (Views.SecondPage));

İlgili konular