2014-10-29 51 views
0

目前我正在使用WCF处理Xamarin.Forms应用程序。该应用程序与WCF主机建立连接,我得到一个响应,只有响应结果我无法做任何事情。Xamarin Forms - WCF完成了不改变组件的事件

我认为是应该采取的应对的护理方法的代码是:

private static void ClientOnGetHelloDataCompleted(object sender, GetHelloDataCompletedEventsArgs getHelloDataCompletedEventArgs) 
{ 
string msg = null; 

if(getHelloDataCompletedEventArgs.Error != null) 
    { 
     msg = getHelloDataCompletedEventArgs.Error.Message; 
    } 
    else if(getHelloDataCompletedEventArgs.Cancelled != null) 
    { 
     msg = "Request was cancelled"; 
    } 
    else 
    { 
     lblText.Text = getHelloDataCompletedEventArgs.Results.Name; 
    } 
} 

当我调试,我可以看到Results.Name被填满,但出于某种原因,它不更新命名标签lblText。

此方法放置在App.cs(Xamarin Forms portable project)中。

任何人都可以帮助我解决这个问题吗?

+0

你在UI线程更新lblText? – 2014-10-29 12:39:27

+0

我如何知道我在UI线程上?我尝试了很多像InvokeOnMainThread(()=> {//操作UI控件 })的东西; 但似乎没有更新标签。 – Jos 2014-10-29 13:04:43

+0

你有没有试过Xamarin.Forms.Device.BeginInvokeOnMainThread? – 2014-10-29 13:10:33

回答

0

应当刷新U.I在主线程,这里是修复

else 
    { 
     InvokeOnMainThread(() => lblText.Text = getHelloDataCompletedEventArgs.Results.Name); 

    }