[英]C# UWP Execute action in other page
I have a problem with the develop of my UWP app. 我的UWP应用程序开发存在问题。 I want to when button 1 on page 1 is pressed: Page 2 is opened and a sqlite connection is made, then it show the data in a list view. 我想按一下第1页上的按钮1:打开第2页并建立sqlite连接,然后在列表视图中显示数据。
Currently I have a button on page 2 that connects to sqlite and it fills the list view but as I say it should be do it by button 1 on page 1. 目前,我在第2页上有一个连接到sqlite的按钮,它填充了列表视图,但正如我所说,应该通过第1页上的按钮1来完成。
Button Show List View: 按钮显示列表视图:
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;
}
My Xaml of page 2: 第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>
In my MainPage I have a Pane (Hamburguer Menu) with a page 2 radiobutton: (Portada is Page 1 and Metrados is Page 2): 在我的主页中,我有一个窗格(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;
}
The question is how I can do this only with button 1 in page 1? 问题是我如何只能使用第1页上的按钮1来执行此操作?
As one way, you can pass some special parameter when you navigating from page1 to page2, for example: 作为一种方法,您可以在从page1导航到page2时传递一些特殊参数,例如:
private void GoToConnectPage_OnClick(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(ConnectPage), "connect");
}
And then check this parameter in OnNavigatedTo method on second page: 然后在第二页的OnNavigatedTo方法中检查此参数:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var parameter = e.Parameter as string;
if (parameter != null && parameter.Equals("connect"))
{
// Connect here
}
base.OnNavigatedTo(e);
}
If I'm not mistaken, you can pass any object as a parameter, not only string. 如果我没记错的话,您可以将任何对象作为参数传递,而不仅仅是字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.