[英]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.