C#UWP在其他页面中执行操作

时间:2016-06-03 02:27:25

标签: c# sqlite class uwp

我的UWP应用程序的开发存在问题。 我想按下第1页上的按钮1: 打开页面2并建立sqlite连接,然后在列表视图中显示数据。

目前我在第2页上有一个连接到sqlite的按钮,它填充了列表视图,但正如我所说,它应该通过第1页的按钮1来完成。

按钮显示列表视图:

private void buttonShowList_Click(object sender, RoutedEventArgs e)
        {
            SQLiteConnection dbConnection = new SQLiteConnection("Database.db");
            string sSQL1 = @"CREATE TABLE IF NOT EXISTS Metrados_Head
                                (ID INTEGER PRIMARY KEY Autoincrement NOT NULL
                                , A VARCHAR ( 255 )
                                , B VARCHAR ( 255 )                               
                                );";

            ISQLiteStatement cnStatement_Head1 = dbConnection.Prepare(sSQL1);
            cnStatement_Head1.Step();
            string sSQL2 = @"INSERT OR REPLACE INTO Metrados_Head ([ID], [A], [B], [C], [D], [E], [F]) VALUES (1,'1','2','3','4','5','6');";
            ISQLiteStatement cnStatement_Head2 = dbConnection.Prepare(sSQL2);
            cnStatement_Head2.Step();
            var datos_Head = new List<Metrados_Head>();
            string sSQL3 = @"SELECT
                            [A],
                            [B],
                            FROM Metrados_Head";

            ISQLiteStatement dbState_Head1 = dbConnection.Prepare(sSQL3);

            while (dbState_Head1.Step() == SQLiteResult.ROW)
            {
                string sA = dbState_Head1["A"] as string;
                string sB = dbState_Head1["B"] as string;

                Metrados_Head Datos_Metrados_Head = new Metrados_Head() { A = sA, B = sB};
                datos_Head.Add(Datos_Metrados_Head);
            }
            ListMetrados_Head.ItemsSource = datos_Head;
}

我的第2页的Xaml:

<Button x:Name="buttonShowList" Content="ShowList" HorizontalAlignment="Left" Margin="228,30,0,0" VerticalAlignment="Top" Visibility="Visible" Click="buttonShowList_Click" />
        <ListView x:Name="ListMetrados_Head" HorizontalAlignment="Left" Height="600" Margin="10,109,0,0" VerticalAlignment="Top" Width="1260" BorderBrush="Black" BorderThickness="1" Background="White">
        <ListView.ItemTemplate>
            <DataTemplate>
                    <Grid Width="{Binding ElementName=ListMetrados_Head, Path=ActualWidth}" Padding="0" Margin="0" >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="150" />
                        <ColumnDefinition Width="150" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="40"/>
                    </Grid.RowDefinitions>
                    <TextBlock x:Name="TextBlock_A" Grid.Column="0" Text="{Binding Path=A}" TextWrapping="Wrap" />
                    <TextBox x:Name="TextBox_B" Grid.Column="1" Text="{Binding Path=B}" TextWrapping="Wrap" />
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
        </ListView>

在我的主页中,我有一个带有第2页单选按钮的窗格(汉堡菜单):( Portada是第1页,Metrados是第2页):

 private void HamburgerButtom_Click(object sender, RoutedEventArgs e)
        {
            MenuHamburgesa.IsPaneOpen = !MenuHamburgesa.IsPaneOpen;
            HamburgerButtom.IsChecked = false;
        }

        private void GoBack_Click(object sender, RoutedEventArgs e)
        {
            GoBack.IsChecked = false;
            if (ContentFrame.CanGoBack)
            {
                ContentFrame.GoBack();
            }
        }

        private void NavigateToPortada_Click(object sender, RoutedEventArgs e)
        {
            ContentFrame.Navigate(typeof(PagePortada));
            NavigateToPortada.IsChecked = true;
        }

        private void NavigateToMetrados_Click(object sender, RoutedEventArgs e)
        {
            ContentFrame.Navigate(typeof(PageMetrados));
            NavigateToMetrados.IsChecked = true;            
        }

问题是如何才能使用第1页中的按钮1来完成此操作?

1 个答案:

答案 0 :(得分:0)

作为一种方式,您可以在从page1导航到page2时传递一些特殊参数,例如:

private void GoToConnectPage_OnClick(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(ConnectPage), "connect");
}

然后在第二页的OnNavigatedTo方法中检查此参数:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var parameter = e.Parameter as string;

    if (parameter != null && parameter.Equals("connect"))
    {
        // Connect here
    }

    base.OnNavigatedTo(e);
}

如果我没有弄错,你可以传递任何对象作为参数,而不仅仅是字符串。

相关问题