公共方法仅在“日志”中运行,但不在标签,按钮等中运行

时间:2016-03-24 03:32:07

标签: c# xamarin xamarin.forms

我有一个masterdetailpage和一个作为根页面的内容页面,所以为了从我的masterdetailpage运行一个函数,我通过一个公共方法加载它。但是当我这样做时,它会在我在日志中输入内容时起作用,但是当我尝试使某些内容真正发生时,例如更改标签的文本或者做出更大的内容等等。它不会运行。即使方法内的System.Diagnostics.Debug运行。我的代码如下所示:

我的主页:

knappen.Clicked += (object sender, EventArgs e) => {
                var ourStartPage = new StartPage ();
                ourStartPage.InitThisPage();
            } 

这是我的内容页面(StartPage),其中包含加载我想加载的特定函数的公共方法:

public void InitThisPage() 
    {
        LoadData();
    }

async void LoadData() 
    {
        label.TextColor = Color.Red; //so this does not change color
        System.Diagnostics.Debug.WriteLine ("Does it reach this?"); //but it reaches this and types this out in the log.
    }

所以上面,它到达我在日志中键入的内容,但标签的颜色不会改变。我尝试了不同的标签,按钮,图像等,但无论我在日志中运行它做什么,似乎都没有运行。

这里的问题是什么?

1 个答案:

答案 0 :(得分:1)

尝试在主UI线程上更新标签的颜色:

InvokeOnMainThread ( () => {
   label.TextColor = Color.Red; //so this does not change color
});

参考:Working with the UI Thread