在我的INotifyPropertyChanged类中运行异步函数并且代码不运行
问题描述:
我想让每个listcell在不同的列表视图中取决于他们之前点击的内容,并且我正在使用INotifyPropertyChanged执行此操作。在我的INotifyPropertyChanged类中运行异步函数并且代码不运行
我在我的班级有一个if/else代码,但它没有运行..我没有颜色。 如果我例如我们的颜色= Color.Green;在我的公共电流内,然后它的工作。但是,当我做这个if/else语句它不运行。
这是我的课:
public class Current : INotifyPropertyChanged
{
Color color;
public event PropertyChangedEventHandler PropertyChanged;
public Current()
{
RunThis();
}
async void RunThis()
{
var checkWhatOption = await parseAPI.WhatOption();
if ((checkWhatOption ["results"] as JArray).Count > 0) {
color = Color.Black;
}
else {
color = Color.Red;
}
}
public Color Color
{
set
{
if (color != value)
{
color = value;
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs("Color"));
}
}
}
get
{
return color;
}
}
}
而在我,我用它在页面上XAML我有这样的代码:
<Label BackgroundColor="{Binding Color}" >
<Label.BindingContext>
<local:Current />
</Label.BindingContext>
更新:
public static async Task RunThis()
{
if ((Stringone ["results"] as JArray).Count > 0) {
Color = Color.Black; //An object reference is required to access non-static member.
}
else {
color = Color.Red; //An object reference is required to access non-static member.
}
}
protected override async void OnAppearing()
{
await Current.RunThis();
}
答
机会被拦截d。
您的电话从您的async
RunThis
函数构造函数不使用await
,这当然不能在构造函数内。
也可以尝试到RunThis
功能沿线更改为: -
public async Task RunThis()
{
..
}
然后找到并适当的地方调用这个使用await
,而不是通过一个构造。请确保调用者也有async
。
如何通过构造函数调用它?也许这会做到这一点?保护覆盖异步无效OnAppearing() \t \t { //并把代码放在这里? \t \t} –
找不到合适的替代方法.. –
@ William.John'受保护的异步覆盖无效OnAppearing()'在“ContentPage”上可用。 – Pete