簡體   English   中英

C#UWP在其他頁面中執行操作

[英]C# UWP Execute action in other page

我的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>

在我的主頁中,我有一個窗格(Hamburguer菜單),該窗格具有第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來執行此操作?

作為一種方法,您可以在從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);
}

如果我沒記錯的話,您可以將任何對象作為參數傳遞,而不僅僅是字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM