我试图让listview中的每个listcell根据他们之前点击的内容而有所不同,我使用的是INotifyPropertyChanged。
我的课程中有一个if / else代码,但它没有运行..我没有颜色。 如果我例如我们一个颜色= Color.Green;在我的公共电流里然后它工作。但是当我这样做时,如果/ 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 ();
}
答案 0 :(得分:0)
它有可能被封锁。
您对构造函数中async
RunThis
函数的调用未使用await
,当然您无法在构造函数中使用。
还尝试将RunThis
函数更改为以下内容: -
public async Task RunThis()
{
..
}
然后找到并使用await
调用此地点,但不是通过构造函数调用。确保来电者也指定了async
。