Разработка простого приложения WPF с домашней страницей и несколькими другими страницами.
Если после такой навигации перейти с моей домашней страницы, после нажатия кнопки:
private void Button_Click(object sender, RoutedEventArgs e)
{
this.NavigationService.Navigate(new Page1())
}
Мы переходим к Page1 просто отлично. У меня нет кнопки на странице Page 1, я просто хочу, чтобы она запустила метод, а затем перейдите на страницу 2, например:
public Page1()
{
InitializeComponent()
///go do some work
BusyWorkMethod()
}
public void BusyWorkMethod()
{
*does some work, then finishes*
this.NavigationService.Navigate(new Page2())
}
Проблема заключается в том, что на втором переходе требуетсяперейдите к Page2, NavigationService является нулевым.
Если, однако, я добавлю на Page1 кнопку, аналогичную HomePage, она сделает следующее:
public Page1()
{
InitializeComponent()
///go do some work
BusyWorkMethod()
}
public void BusyWorkMethod()
{
*does some work, then finishes*
}
private void Test_Click(object sender, RoutedEventArgs e)
{
//go to validating page
this.NavigationService.Navigate(new Page2());
}
Это работает. Я не уверен, что там происходит.
РЕДАКТИРОВАТЬ: добавить XAML. Это MainWindow
<NavigationWindow x:Class="DataGenerationApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DataGenerationApplication"
mc:Ignorable="d"
Title="MainWindow" Height="400" Width="500" Source="HomePage.xaml" ShowsNavigationUI="False">
</NavigationWindow>
в моем примере это "Page1", здесь он называется HomePage
<Page x:Class="DataGenerationApplication.HomePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DataGenerationApplication"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="500"
Title="HomePage" KeepAlive="True">
<Grid Margin="10,0,10,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="1.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<TextBlock HorizontalAlignment="Left" Margin="20,20,0,0" TextWrapping="NoWrap" Text="ConnectionString" VerticalAlignment="Top" Grid.Column="0" Grid.Row="0"/>
<TextBlock HorizontalAlignment="Left" Margin="20,20,0,0" TextWrapping="NoWrap" Text="Movie Database Name" VerticalAlignment="Top" Grid.Column="0" Grid.Row="1"/>
<TextBlock HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="Movie Collection Name" VerticalAlignment="Top" Grid.Column="0" Grid.Row="2"/>
<TextBlock HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="Amount of Movies" VerticalAlignment="Top" Grid.Column="0" Grid.Row="3"/>
<TextBlock HorizontalAlignment="Left" Margin="20,20,0,0" TextWrapping="NoWrap" Text="Users Database Name" VerticalAlignment="Top" Grid.Column="0" Grid.Row="4"/>
<TextBlock HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="Users Collection Name" VerticalAlignment="Top" Grid.Column="0" Grid.Row="5"/>
<TextBlock HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="Amount of Users" VerticalAlignment="Top" Grid.Column="0" Grid.Row="6"/>
<TextBlock HorizontalAlignment="Left" Margin="20,20,0,0" TextWrapping="NoWrap" Text="Reviews Database Name" VerticalAlignment="Top" Grid.Column="0" Grid.Row="7"/>
<TextBlock HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="Reviews Collection Name" VerticalAlignment="Top" Grid.Column="0" Grid.Row="8"/>
<TextBlock HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="Amount of Reviews" VerticalAlignment="Top" Grid.Column="0" Grid.Row="9"/>
<TextBlock HorizontalAlignment="Left" Margin="20,40,0,0" TextWrapping="NoWrap" Text="Clear Previous Data?" VerticalAlignment="Top" Grid.Column="0" Grid.Row="10"/>
<CheckBox Content="" HorizontalAlignment="Left" Margin="133,41,0,0" Grid.Row="10" VerticalAlignment="Top" Name="ClearDB"/>
<TextBox Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" Margin="20,20,0,0" TextWrapping="NoWrap" Text="mongodb://localhost:27017" VerticalAlignment="Top" Background="LightGray" Width="200" Name="ConnectionString"/>
<TextBox Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" Margin="20,20,0,0" TextWrapping="NoWrap" Text="Movies" VerticalAlignment="Top" Background="LightGray" Width="200" Name="MovieDb"/>
<TextBox Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="MovieDocs" VerticalAlignment="Top" Background="LightGray" Width="200" Name="MovieCollection"/>
<TextBox Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="1000" VerticalAlignment="Top" Background="LightGray" Width="200" Name="MovieAmount" PreviewTextInput="NumberValidationTextBox"/>
<TextBox Grid.Column="1" Grid.Row="4" HorizontalAlignment="Left" Margin="20,20,0,0" TextWrapping="NoWrap" Text="Users" VerticalAlignment="Top" Background="LightGray" Width="200" Name="UserDb"/>
<TextBox Grid.Column="1" Grid.Row="5" HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="UserDocs" VerticalAlignment="Top" Background="LightGray" Width="200" Name="UserCollection"/>
<TextBox Grid.Column="1" Grid.Row="6" HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="100" VerticalAlignment="Top" Background="LightGray" Width="200" Name="UserAmount" PreviewTextInput="NumberValidationTextBox"/>
<TextBox Grid.Column="1" Grid.Row="7" HorizontalAlignment="Left" Margin="20,20,0,0" TextWrapping="NoWrap" Text="Reviews" VerticalAlignment="Top" Background="LightGray" Width="200" Name="ReviewDb"/>
<TextBox Grid.Column="1" Grid.Row="8" HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="ReviewDocs" VerticalAlignment="Top" Background="LightGray" Width="200" Name="ReviewCollection"/>
<TextBox Grid.Column="1" Grid.Row="9" HorizontalAlignment="Left" Margin="20,5,0,0" TextWrapping="NoWrap" Text="300" VerticalAlignment="Top" Background="LightGray" Width="200" Name="ReviewAmount" PreviewTextInput="NumberValidationTextBox"/>
<Button Content="Generate Data" Grid.Column="1" HorizontalAlignment="Left" Margin="120,38,0,0" Grid.Row="10" VerticalAlignment="Top" Width="100" Background="LightGreen" Click="Button_Click"/>
</Grid>
</Page>
и мой "Page2", названный GeneratingPage
<Page x:Class="DataGenerationApplication.GeneratingPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DataGenerationApplication"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="500"
Title="GeneratingPage" KeepAlive="True">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="25,0,0,0" Text="Generating..." FontSize="80" TextWrapping="Wrap" VerticalAlignment="Center" Height="122" Width="497"/>
<Button Content="TestButton" HorizontalAlignment="Left" Margin="205,295,0,0" VerticalAlignment="Top" Width="75" Click="Test_Click"/>
</Grid>
</Page>