Xamarin 将主页上的文本标签绑定到计时器
我们有一个非常简单的应用程序,其想法是计时器将根据移动应用程序内的不同配置更新主屏幕上的标签。我已经创建了绑定,可以从它自己更新主页,但不能从计时器。我认为缺少的是在主页中进行一次更改,以检测字符串是否已更改 显示布局代码,将标签绑定到名称“LabelText” 这是主页中的代码,它可以工作,我可以看到它将数据发送到文本标签Xamarin 将主页上的文本标签绑定到计时器,xamarin,xamarin.forms,binding,Xamarin,Xamarin.forms,Binding,我们有一个非常简单的应用程序,其想法是计时器将根据移动应用程序内的不同配置更新主屏幕上的标签。我已经创建了绑定,可以从它自己更新主页,但不能从计时器。我认为缺少的是在主页中进行一次更改,以检测字符串是否已更改 显示布局代码,将标签绑定到名称“LabelText” 这是主页中的代码,它可以工作,我可以看到它将数据发送到文本标签 public static MyClass _myClass = new MyClass(); public Homepage() { BindingContex
public static MyClass _myClass = new MyClass();
public Homepage()
{
BindingContext = _myClass;
_myClass.LabelText = "Inside the home page";
}
这是App.cs代码,我们启动计时器,然后想在主页标签上设置文本。我可以看到类被调用了,但是它没有设置文本
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace Binding_Demo
{
public partial class App : Application
{
public static MyClass _myClass = new MyClass();
public App()
{
//InitializeComponent();
Device.StartTimer(TimeSpan.FromSeconds(10), () =>
{
Task.Run(() =>
{
Debug.WriteLine("Timer has been triggered");
// !!!!! This is not setting the text in the label !!!!!
BindingContext = _myClass;
_myClass.LabelText = "Inside the timer app";
});
return true; //use this to run continuously
});
MainPage = new NavigationPage(new MainPage());
}
protected override void OnStart()
{
//
}
protected override void OnSleep()
{
}
protected override void OnResume()
{
// force app to mainpage and clear the token
}
}
}
我已经创建了绑定,可以从它自己更新主页,但不能从计时器
正如Jason所说,请确保绑定模型是唯一的。您可以在App类中创建MyClass
的全局static实例,然后将此实例绑定到主页
检查代码:
App.xaml.cs
public partial class App : Application
{
public static MyClass _myClass = new MyClass();
public App()
{
InitializeComponent();
Device.StartTimer(TimeSpan.FromSeconds(5), () =>
{
Task.Run(() =>
{
_myClass.LabelText = "Inside the timer app";
});
return true;
});
MainPage = new NavigationPage(new Homepage());
}
}
Homepage.xaml.cs:
public Homepage()
{
InitializeComponent();
BindingContext = App._myClass;
}
主页和应用程序似乎都有自己的MyClassHi实例,有更新吗?如果此解决方案有助于您解决问题,请将其标记为答案。如果在实现过程中遇到一些问题,请尝试在此处用相应的代码发布特定错误。如何关闭该项?
public partial class App : Application
{
public static MyClass _myClass = new MyClass();
public App()
{
InitializeComponent();
Device.StartTimer(TimeSpan.FromSeconds(5), () =>
{
Task.Run(() =>
{
_myClass.LabelText = "Inside the timer app";
});
return true;
});
MainPage = new NavigationPage(new Homepage());
}
}
public Homepage()
{
InitializeComponent();
BindingContext = App._myClass;
}