2010-04-25 9 views
9

मेरे पास 2 पेज है, मुझे mainpage.xaml को login.page xaml पर नेविगेट करने की आवश्यकता है, लेकिन यह मुझे ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं करता है। ; Root.Children.Clear में() ....मैं एक xaml पेज को दूसरे पर कैसे जा सकता हूं?

मैं App.xaml में इस कोड कहा:

private void Application_Startup(object sender, StartupEventArgs e) 
     { 
      Grid myGrid = new Grid(); 
      myGrid.Children.Add(new MainPage()); 
      this.RootVisual = myGrid; 
     }

और की तुलना में मैं main.xaml पर कुछ कोड adde LoginUI.xaml नेविगेट करने के लिए

namespace Gen.CallCenter.UI 
{ 
    public partial class MainPage : UserControl 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 

      Grid Root = ((Grid)(this.Parent)); 
      Root.Children.Clear(); 
      Root.Children.Add(new LoginUI()); 
     } 
    } 
}

मैं LoginUx.xaml पर main.xaml कैसे जा सकता हूं?

उत्तर

11

AnthonyWJones की तरह कहा गया है कि आपको नेविगेशन ढांचे का उपयोग करने की आवश्यकता है।

सबसे पहले आप में आप

xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 

MainPage.xaml तो फिर तुम जहां विभिन्न XAML पृष्ठों स्विच करेंगे भीतर एक फ्रेम की आवश्यकता होगी अपनी परियोजना और यह refernce में System.Windows.Controls.Navigation के लिए एक संदर्भ जोड़ने की आवश्यकता होगी। कुछ इस तरह:

<navigation:Frame x:Name="navFrame" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Source=”/Views/First.xaml” /> 

अब MainPage.xaml में कहीं आप एक टैग

<Button Click="Button_Click" Tag="/Views/Second.xaml" Content="Second" />

के साथ एक बटन हो सकता था और Button_Click eventhandler में आप सामग्री बाहर स्विच कर सकता है navFrame में पता चला है।

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Button theButton = sender as Button; 
    string url = theButton.Tag.ToString(); 

    this.navFrame.Navigate(new Uri(url, UriKind.Relative)); 
} 

नोट करने के लिए एक शांत बात यह है कि NavigationFramework ब्राउज़र वापस का उपयोग करने और आगे बटन पूरी तरह से काम करते हैं और पता-अद्यतन में URL XAML पेज पर निर्भर करता है के द्वारा आप :)

2

ऐसा लगता है कि आपने गलत पैर पर शुरुआत की है। इस तरह की चीज नेविगेशन एप्लिकेशन टेम्पलेट का उपयोग करने के लिए catered है। आपको एक नई परियोजना शुरू करनी चाहिए और "सिल्वरलाइट नेविगेशन एप्लिकेशन" का चयन करना चाहिए।

एक बार लोड होने के बाद यह देखने के लिए कि मूल खोल कैसा दिखता है। फिर देखें कि मेनपेज कैसे संरचित है और होम व्यू कहें। आपको क्या करना होगा नेविगेशन Page प्रकार के आधार पर नए दृश्य बनाएं और फिर उन्हें MainPage.xaml में जोड़ें।

1
private void formcombobox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    foreach (ComboBoxItem child in formcombobox.Items) 
    { 
     if (child.Name != null && child.IsSelected == true) 
     { 

      string url = new System.Uri("/DWRWefForm;component/Pages/" 
          + child.Name + ".xaml", System.UriKind.Relative).ToString(); 
      this.navframe.Navigate(new Uri(url, UriKind.Relative)); 
     } 

    } 
} 
2

पर वर्तमान में कर रहे हैं इस समस्या को हल करने के लिए सरल एक, आप इस वेबसाइट को देख सकते हैं: http://blogs.microsoft.co.il/blogs/eladkatz/archive/2011/01/25/adapting-silverlight-navigation-to-mvvm.aspx

मुझे पहले यह समस्या थी। लेकिन जब मैं इस ट्यूटोरियल को पढ़ता हूं, तो मैं एमवीवीएम के साथ आसानी से दूसरे दृश्य में जासूसी कर सकता हूं। उम्मीद है कि यह आप सभी problem.Thx

12

हल के आप देख रहे हैं MainPage.xaml तो आप एक Button या MainPage.xaml में एक ImageEdit पर क्लिक करके एक XAML newPage.xaml बुलाया पेज खोलना चाहते हैं लगता है चलो मदद कर सकते हैं, यहां त्वरित समाधान है कि आप MainPage.xaml.cs के अंदर लिखना चाहिए:

private void imageEdit1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    newPage mynewPage = new newPage(); //newPage is the name of the newPage.xaml file 
    this.Content = mynewPage; 
} 

यह मेरे साथ काम कर रहा है।

+0

मेरे लिए भी काम कर रहा है ... यदि आपके पास बटन नियंत्रण के लिए पहले से ही 'निजी शून्य बटन_Click_1 (ऑब्जेक्ट प्रेषक, रूटेड एवेंट आर्ट्स ई)' है, तो पहले और उस काम के अलावा, पहली पंक्ति की प्रतिलिपि न बनाएं। – DevCompany

+0

हालांकि यह काम कर रहा है, यूआरएल बदल रहा प्रतीत नहीं होता है। –

1

इस प्रयास करें:

private void imageEdit1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    newPage mynewPage = new newPage(); //newPage is the name of the newPage.xaml file 
    this.Content = mynewPage; 
} 

यह मेरे लिए काम कर रहा है। :)

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