Xamarin通过导航形成按钮计数点击



我调试了自己的代码,每次从主页到第二页来回导航时,我都会实现btnoflinecount重置。重新加载后是否可以不重置计数器?

首先,用户将点击btnOffline,它将把用户重定向到第二个页面。一旦用户点击btnDone,它将返回主页。同时,我将根据按钮点击获取开始和结束日期时间戳。现在,我的结束日期时间戳将不断更新,即使我有if语句来检查条件。(我会得到btnDone事件的结束日期时间戳(当我从第二页导航回主页时,发现我的计数器重置了,但还没有触发btnDone_Clickd。有人知道怎么解决这个问题吗?

主页

public partial class MainPage : ContentPage
{
public string mainpagevalue;
int offlinecount = 0;
public MainPage()
{
InitializeComponent();
}
private void btnOffline_Clicked(object sender, EventArgs e)
{
offlinecount++;
Navigation.PushAsync(new SecondPage(this, lblEndDT));

if (offlinecount == 1)
{
string currentDT = DateTime.Now.ToString();
lblStartDT.Text = currentDT;
}

}

第二页

public partial class SecondPage: ContentPage
{
Label lblEndDT;
MainPage mainpage;
int btnofflinedone = 0;
public SecondPage()
{
InitializeComponent();
}
public SecondPage(MainPage mPage, Label endDT)
{
InitializeComponent();
lblEndDT = endDT;
mainpage = mPage;
}
protected void btnDone_Clicked(object sender, EventArgs e)
{

btnofflinedone++;
if (btnofflinedone == 1)
{
string edt = DateTime.Now.ToString();
lblEndDT.Text = edt;
mainpage.mainpagevalue = lblEndDT.Text;
}
Navigation.PopAsync();

}
}
} 

首先,作为一个建议,请使用MS doc的命名指南,它们大大提高了代码的可读性。您的查询可以很容易地理解,并且可以很快获得帮助。

现在,对于上述问题,

每次从MainPage的按钮导航并单击下面的代码行时,都会创建一个新的SecondPage实例。

Navigation.PushAsync(new SecondPage(this, lblEndDT));

您正在检查btnDone_ClickedSecondPage的非静态变量。每次创建新实例时,都会重新创建非静态变量并将其重置为默认值。这就是您无法限制"时间戳"标签更新的原因。

快速修复-将静态添加到btnofflinedone

static int btnofflinedone = 0;

我的建议是将静态btnofflinedone变量从SecondPage转移到App

应用程序Xaml.cs

public partial class App : Application
{
internal static int btnofflinedone { get; set; } = 0;
public App()
{
......

SecondPage中移除btnofflinedone,并用App.btnofflinedone替换btnofflinedone

最新更新