web-dev-qa-db-ja.com

あるxamlページを別のページに移動するにはどうすればよいですか?

2ページありますmainpage.xamlからlogin.pagexamlに移動する必要がありますが、スローされます オブジェクト参照がオブジェクトインスタンスに設定されていません。 Root.Children.Clear(); ...で.

私はこのコードをApp.xamlに追加しました:

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

そして、メイン.xamlにいくつかのコードを追加して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());
        }
    }
}

Main.xamlをLoginUI.xamlに移動するにはどうすればよいですか?

9
loki

のように AnthonyWJones ナビゲーションフレームワークを使用する必要があると述べました。

まず、プロジェクトにSystem.Windows.Controls.Navigationへの参照を追加し、MainPage.xamlで参照する必要があります。

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

次に、さまざまなXAMLページを切り替えるフレームが必要になります。このようなもの:

<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イベントハンドラーでは、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を使用すると、ブラウザーの戻るボタンと進むボタンが完全に機能し、現在表示しているXAMLページに応じてアドレスバーのURLが更新されることです:)

11
texmex5

MainPage.xamlを表示しているときに、newPage.xamlButtonまたはImageEditをクリックして、MainPage.xamlという別の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;
}

これは私と一緒に働いています。

12

間違った足で始めたようです。この種のものは、ナビゲーションアプリケーションテンプレートを使用するために用意されています。新しいプロジェクトを開始し、「Silverlightナビゲーションアプリケーション」を選択する必要があります。

ロードしたら、それを実行して、基本的なシェルがどのように見えるかを確認します。次に、MainPageがどのように構成されているかを見て、ホームビューと言います。ナビゲーションPageタイプに基づいて新しいビューを作成し、それらをMainPage.xamlに追加する必要があります。

2
AnthonyWJones

この問題を解決する簡単な方法は、次のWebサイトを参照してください: http://blogs.Microsoft.co.il/blogs/eladkatz/archive/2011/01/25/adapting-silverlight-navigation-to -mvvm.aspx

私は以前にこの問題を抱えていました。しかし、このチュートリアルを読んだ後は、MVVMを使用して別のビューに簡単に移動できます。これがあなた方全員が問題を解決するのを助けることができることを願っています。Thx

2
Seandy
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)); 
        }

    }
}
1
Shravankumar

これを試して:

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

それは私のために働いています。 :)

1
MAyadi