我正在研究一个显示进出口编号的项目。但是,数字不断变化。这就是为什么我需要一个刷新按钮。我进行了很多搜索,但找不到任何解决方案。
public MainPage()
{
InitializeComponent();
var cli = new WebClient();
cli.Headers[HttpRequestHeader.ContentType] = "application/json";
string response = cli.UploadString("Can't share company API and token sorry");
var responseModel = Newtonsoft.Json.JsonConvert.DeserializeObject<Ihap>(response);
IthalatGunluk.Text = responseModel.Import.ToString();
IthalatAylik.Text = responseModel.ImportMonthly.ToString();
IthalatYillik.Text = responseModel.ImportMonthlyPrevious.ToString();
IhracatGunluk.Text = responseModel.Export.ToString();
IhracatAylik.Text = responseModel.ExportMonthly.ToString();
IhracatYillik.Text = responseModel.ExportMonthlyPrevious.ToString();
Dolar.Text = responseModel.Dolar.ToString();
Euro.Text = responseModel.Euro.ToString();
}
class Ihap
{
public double Dolar { get; set; }
public double Euro { get; set; }
public int Import { get; set; }
public int Export { get; set; }
public int ImportMonthly { get; set; }
public int ImportMonthlyPrevious { get; set; }
public int ExportMonthly { get; set; }
public int ExportMonthlyPrevious { get; set; }
}
答案 0 :(得分:1)
您可以将构造函数中当前的代码移动到一个单独的方法,然后从构造函数和按钮单击处理程序中调用它:
public MainPage()
{
InitializeComponent();
RefreshData();
}
public void RefreshButton_Click(object sender, EventArgs e) => RefreshData();
private void RefreshData()
{
var cli = new WebClient();
cli.Headers[HttpRequestHeader.ContentType] = "application/json";
string response = cli.UploadString("Can't share company API and token sorry");
var responseModel = Newtonsoft.Json.JsonConvert.DeserializeObject<Ihap>(response);
IthalatGunluk.Text = responseModel.Import.ToString();
IthalatAylik.Text = responseModel.ImportMonthly.ToString();
IthalatYillik.Text = responseModel.ImportMonthlyPrevious.ToString();
IhracatGunluk.Text = responseModel.Export.ToString();
IhracatAylik.Text = responseModel.ExportMonthly.ToString();
IhracatYillik.Text = responseModel.ExportMonthlyPrevious.ToString();
Dolar.Text = responseModel.Dolar.ToString();
Euro.Text = responseModel.Euro.ToString();
}
答案 1 :(得分:0)
有三种方法可以引用用户界面。
使用INotifyPropertyChanged更新您的导入和导出编号。因此,当值更改时,它将更新UI。
使用Threading timer根据需要的时间间隔加载新的导入和导出编号
创建ObservableCollection并放置您的导入和导出编号,当编号更新时,它将更新UI。
答案 2 :(得分:0)
您正在通过调用Web服务和API响应的绑定属性来获取数据。
因此,基本上,您的问题是每X秒执行一次操作。
您可以使用线程和计时器(C#计时器-而不是Xamarin.Timer)来定期进行API调用。
像这样:
public static Timer YourTimer;
static void Main(string[] args)
{
YourTimer = new System.Timers.Timer(1000); //In milliseconds
YourTimer.Elapsed += new ElapsedEventHandler(RunThis);
YourTimer.AutoReset = true;
YourTimer.Enabled = true;
}
private static void RunThis(object source, ElapsedEventArgs e)
{
//Your API call here
}
注意:您将需要使用
System.Timers
名称空间。
希望有帮助。