[英]Xamarin forms Passing values from Pages with navigation
Initially, I did the navigation.popasync
on second page back to main page and passed in the values inside the navigation.pushasync
.最初,我将第二页上的navigation.popasync
返回到主页面并传入了navigation.pushasync
中的值。 However, now I want to go to a third page, and then do a update of time stamp lblEndDT
in third page.但是,现在我想转到第三页,然后在第三页中更新时间戳lblEndDT
。 I want to update lblEndDT
on main page but btnDone
in Third Page.我想更新lblEndDT
主页但btnDone
在第三页。 How do I pass the value from main page to third page?如何将值从主页传递到第三页?
Main Page主页
public partial class MainPage : ContentPage
{
public string mainpagevalue;
int offlinecount = 0;
int onlinecount = 0;
public MainPage()
{
InitializeComponent();
}
private void btnOffline_Clicked(object sender, EventArgs e)
{
offlinecount++;
//Navigation.PushAsync(new SecondPage(this, lblEndDT));
Navigation.PushAsync(new OfflinePage(this, lblEndDT, btnOnline));
if (offlinecount == 1)
{
string currentDT = DateTime.Now.ToString();
lblStartDT.Text = currentDT;
}
}
private void btnOnline_Clicked(object sender, EventArgs e)
{
onlinecount++;
Navigation.PushAsync(new OnlinePage());
if (onlinecount == 1)
{
string currentDT = DateTime.Now.ToString();
lblStartDT.Text = currentDT;
}
}
}
}
main page xaml主页 xaml
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="70"/>
<RowDefinition Height="30"/>
<RowDefinition Height="20"/>
<RowDefinition Height="70"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="10"/>
<RowDefinition Height="70"/>
<RowDefinition Height="30"/>
<RowDefinition Height="20"/>
<RowDefinition Height="70"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="10"/>
<RowDefinition Height="70"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="10"/>
<RowDefinition Height="70"/>
<RowDefinition Height="30"/>
<RowDefinition Height="20"/>
<RowDefinition Height="70"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="10"/>
<RowDefinition Height="70"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="10"/>
<RowDefinition Height="50"/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="60" />
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="70"/>
</Grid.ColumnDefinitions>
<!--OFFLINE TOOL-->
<ImageButton x:Name="btnOffline" IsEnabled="True" Source="@drawable/offlinetool.png" Grid.Row="1" Grid.Column="1" BackgroundColor="Transparent" Clicked="btnOffline_Clicked"/>
<Label Text="Offline Tool" Grid.Row="2" Grid.Column="1" Margin="15,0,0,0"/>
<Label Text="Start Date Time:" Grid.Row="1" Grid.Column="3"/>
<Label Text="End Date Time:" Grid.Row="1" Grid.Column="3" Margin="7,40,0,0"/>
<Label x:Name="lblStartDT" Text="" Grid.Column="4" Grid.Row="1"/>
<Label x:Name="lblEndDT" Text="" Grid.Column="4" Grid.Row="1" Margin="0,40,0,0"/>
<!--ONLINE TOOL-->
<ImageButton x:Name="btnOnline" Source="@drawable/ot.png" Grid.Row="8" Grid.Column="1" BackgroundColor="Transparent" IsEnabled="False" Clicked="btnOnline_Clicked"/>
<Label Text="Online Tool" Grid.Row="9" Grid.Column="1" Margin="19,0,0,0"/>
<Label Text="Start Date Time:" Grid.Row="8" Grid.Column="3" />
<Label Text="End Date Time:" Grid.Row="8" Grid.Column="3" Margin="7,40,0,0"/>
<Label Text="Status:" Grid.Row="9" Grid.Column="3" Margin="58,0,0,0" />
<Label x:Name="lblOnlineStartDT" Text="" Grid.Column="4" Grid.Row="8"/>
<Label x:Name="lblOnlineEndDT" Text="" Grid.Column="4" Grid.Row="8" Margin="0,40,0,0"/>
<Label x:Name="txtOnlineStatus" Text="NOT STARTED" TextColor="Red" Grid.Column="4" Grid.Row="9"/>
</Grid>
Offline Page离线页面
public partial class OfflinePage : ContentPage
{
Label offlineEndDT;
MainPage mainpage;
ImageButton btnonline;
public OfflinePage()
{
InitializeComponent();
}
public OfflinePage(MainPage mpage, Label endDT, ImageButton onlineimage)
{
InitializeComponent();
mainpage = mpage;
offlineEndDT = endDT;
btnonline = onlineimage;
}
private void Button_Clicked(object sender, EventArgs e)
{
App.offlineDonecount++;
if (App.offlineDonecount == 1)
{
string edt = DateTime.Now.ToString();
offlineEndDT.Text = edt;
mainpage.mainpagevalue = offlineEndDT.Text;
}
btnonline.Source = "onlinetool";
btnonline.IsEnabled = true;
Navigation.PopAsync();
}
}
}
Online Page在线页面
public partial class OnlinePage : ContentPage
{
public OnlinePage()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
Navigation.PushAsync(new ThirdPage());
}
}
}
Third Page第三页
public partial class ThirdPage : ContentPage
{
public ThirdPage()
{
InitializeComponent();
}
private void BtnDone_Clicked(object sender, EventArgs e)
{
}
}
}
Updated:更新:
Create the TimeStamp model with Online, Offline Start and End time.创建具有在线、离线开始和结束时间的时间戳模型。
public class TimeStamp
{
public string OnlineStartTime { get; set; }
public string OnlineEndTime { get; set; }
public string OfflineStartTime { get; set; }
public string OfflineEndTime { get; set; }
}
MainPage:主页:
Xaml: Xml:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="70" />
<RowDefinition Height="30" />
<RowDefinition Height="20" />
<RowDefinition Height="70" />
<RowDefinition Height="30" />
<RowDefinition Height="30" />
<RowDefinition Height="10" />
<RowDefinition Height="70" />
<RowDefinition Height="30" />
<RowDefinition Height="20" />
<RowDefinition Height="70" />
<RowDefinition Height="30" />
<RowDefinition Height="30" />
<RowDefinition Height="10" />
<RowDefinition Height="70" />
<RowDefinition Height="30" />
<RowDefinition Height="30" />
<RowDefinition Height="10" />
<RowDefinition Height="70" />
<RowDefinition Height="30" />
<RowDefinition Height="20" />
<RowDefinition Height="70" />
<RowDefinition Height="30" />
<RowDefinition Height="30" />
<RowDefinition Height="10" />
<RowDefinition Height="70" />
<RowDefinition Height="30" />
<RowDefinition Height="30" />
<RowDefinition Height="10" />
<RowDefinition Height="50" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="60" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="70" />
</Grid.ColumnDefinitions>
<!-- OFFLINE TOOL -->
<ImageButton
x:Name="btnOffline"
Grid.Row="1"
Grid.Column="1"
BackgroundColor="Transparent"
Clicked="btnOffline_Clicked"
IsEnabled="True"
Source="monkeyicon.png" />
<Label
Grid.Row="2"
Grid.Column="1"
Margin="15,0,0,0"
Text="Offline Tool" />
<Label
Grid.Row="1"
Grid.Column="3"
Text="Start Date Time:" />
<Label
Grid.Row="1"
Grid.Column="3"
Margin="0,40,0,0"
Text="End Date Time:" />
<Label
x:Name="lblStartDT"
Grid.Row="1"
Grid.RowSpan="2"
Grid.Column="4"
Grid.ColumnSpan="2"
Text="{Binding OfflineStartTime}" />
<Label
x:Name="lblEndDT"
Grid.Row="1"
Grid.RowSpan="2"
Grid.Column="4"
Grid.ColumnSpan="2"
Margin="0,40,0,0"
Text="{Binding OfflineEndTime}" />
<!-- ONLINE TOOL -->
<ImageButton
x:Name="btnOnline"
Grid.Row="8"
Grid.Column="1"
BackgroundColor="Transparent"
Clicked="btnOnline_Clicked"
IsEnabled="True"
Source="star_small.png" />
<Label
Grid.Row="9"
Grid.Column="1"
Margin="19,0,0,0"
Text="Online Tool" />
<Label
Grid.Row="8"
Grid.Column="3"
Text="Start Date Time:" />
<Label
Grid.Row="8"
Grid.Column="3"
Margin="7,40,0,0"
Text="End Date Time:" />
<Label
Grid.Row="9"
Grid.Column="3"
Margin="58,0,0,0"
Text="Status:" />
<Label
x:Name="lblOnlineStartDT"
Grid.Row="8"
Grid.RowSpan="2"
Grid.Column="4"
Grid.ColumnSpan="2"
Text="{Binding OnlineStartTime}" />
<Label
x:Name="lblOnlineEndDT"
Grid.Row="8"
Grid.RowSpan="2"
Grid.Column="4"
Grid.ColumnSpan="2"
Margin="0,40,0,0"
Text="{Binding OnlineEndTime}" />
<Label
x:Name="txtOnlineStatus"
Grid.Row="9"
Grid.Column="4"
Text="NOT STARTED"
TextColor="Red" />
</Grid>
Code:代码:
public partial class MainPage : ContentPage
{
public string mainpagevalue;
int offlinecount = 0;
int onlinecount = 0;
public static TimeStamp timeStamp = new TimeStamp();
public MainPage()
{
InitializeComponent();
}
private async void btnOnline_Clicked(object sender, EventArgs e)
{
onlinecount++;
if (onlinecount == 1)
{
string currentDT = DateTime.Now.ToString();
lblOnlineStartDT.Text = currentDT;
timeStamp.OnlineStartTime = currentDT;
}
await Navigation.PushAsync(new OnlinePage());
}
private void btnOffline_Clicked(object sender, EventArgs e)
{
offlinecount++;
//Navigation.PushAsync(new SecondPage(this, lblEndDT));
Navigation.PushAsync(new OfflinePage(this, lblEndDT, btnOnline));
if (offlinecount == 1)
{
string currentDT = DateTime.Now.ToString();
lblStartDT.Text = currentDT;
timeStamp.OfflineStartTime = currentDT;
}
}
}
OfflinePage:离线页面:
public partial class OfflinePage : ContentPage
{
Label offlineEndDT;
MainPage mainpage;
ImageButton btnonline;
public OfflinePage()
{
InitializeComponent();
}
public OfflinePage(MainPage mpage, Label endDT, ImageButton onlineimage)
{
InitializeComponent();
mainpage = mpage;
offlineEndDT = endDT;
btnonline = onlineimage;
}
private void Button_Clicked(object sender, EventArgs e)
{
App.offlineDonecount++;
if (App.offlineDonecount == 1)
{
string edt = DateTime.Now.ToString();
offlineEndDT.Text = edt;
mainpage.mainpagevalue = offlineEndDT.Text;
MainPage.timeStamp.OfflineEndTime = edt;
}
btnonline.IsEnabled = true;
Navigation.PopAsync();
}
}
OnlinePage:在线页面:
private void Button_Clicked(object sender, EventArgs e)
{
Navigation.PushAsync(new ThirdPage());
}
ThirdPage:第三页:
private async void BtnDone_Clicked(object sender, EventArgs e)
{
MainPage.timeStamp.OnlineEndTime = DateTime.Now.ToString();
MainPage mainPage = new MainPage();
mainPage.BindingContext = MainPage.timeStamp;
await Navigation.PushAsync(mainPage);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.