2015-08-27 6 views
6

मैं वर्तमान में एक यूडब्लूपी एप्लीकेशन विकसित कर रहा हूं जिसमें मैप के अंदर कई उपयोगकर्ता नियंत्रण वस्तुएं शामिल हैं (Windows.UI.Xaml.Navigation का उपयोग कर)।उपयोगकर्ता नियंत्रण के माध्यम से पृष्ठ नेविगेशन के लिए यूडब्ल्यूपी एक्सेसिंग फ्रेम एक ऑब्जेक्ट?

इन उपयोगकर्ता नियंत्रण वस्तुओं के साथ मुझे कभी-कभी उपयोगकर्ता को ऑब्जेक्ट्स में एक बटन दबाए रखने की आवश्यकता होती है और एक नए पृष्ठ पर ले जाया जा सकता है, केवल एक ही मुद्दा यह है कि मैं उपयोग करने में सक्षम होने के लिए पृष्ठ के फ़्रेम तक नहीं पहुंच सकता

Frame.Navigate(typeof([page])); 

विधि। मैं इसके बारे में कैसे जाउंगा और/या कोई विकल्प हैं? मैं इस दिन पर फंस गया हूँ!

आप जो भी मदद कर सकते हैं, उसके लिए अग्रिम धन्यवाद!

उत्तर

7

हम पृष्ठ को स्वयं नेविगेट करने दे सकते हैं। बस अपने कस्टम उपयोगकर्ता नियंत्रण में एक घटना को परिभाषित करें और घटना को अपने माता-पिता (पृष्ठ) में सुनें।

एक उदाहरण के रूप समझें:

  1. एक कस्टम उपयोगकर्ता नियंत्रण बनाएँ और परीक्षण उद्देश्य के लिए उस पर एक बटन डाल दिया।
  2. परीक्षण बटन के क्लिक ईवेंट में, पैरेंट पेज नेविगेट करने के लिए ईवेंट को बढ़ाएं।
  3. अभिभावक पृष्ठ में, UserControl की घटना को सुनें और फ्रेम.Navigate पर कॉल करें।

myControl के 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 के 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); 
    } 


} 

नेविगेट mainpage secondpage रहे हैं:

public MainPage() 
    { 
     this.InitializeComponent(); 

     myControl.OnNavigateParentReady += myControl_OnNavigateParentReady; 
    } 

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

शानदार! इसके लिए शुक्रिया। एक जादू की तरह काम किया। – kgyts

+0

मुझे 'ऑननेविगेट पेरेंट रीडी (यह, शून्य) पर एक नलपोइंटर मिलता है; '? – Evilunclebill

+1

मुझे 'सार्वजनिक घटना' को 'सार्वजनिक स्थैतिक घटना' में बदलने की आवश्यकता है, ताकि मैं 'ग्रिड व्यू' के भीतर 'ग्रिड व्यू' के भीतर 'ग्रिड व्यू 'के भीतर' डेटा टेम्पलेट 'के भीतर' UserControl' में इस समाधान का उपयोग कर सकूं। एक 'पृष्ठ' के भीतर ... एक महान समाधान के लिए धन्यवाद। – dav1dsm1th

0

आप वर्तमान विंडो से फ्रेम के लिए एक संदर्भ मिल सकता है सामग्री। कोशिश के पीछे अपने उपयोगकर्ता नियंत्रण के कोड में:

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

या, कास्ट के साथ =>

((फ्रेम) Window.Current.Content) .Navigate (typeof (Views.SecondPage));

संबंधित मुद्दे