Xamarin表单绑定标签文本不起作用

问题描述 投票:0回答:1

我知道以前曾多次回答过这个问题,并且我已遵循所有可能的指南。它不起作用。

这是我的代码:

XAML

<Label Text="{Binding Path=StatusMessage, Mode=TwoWay}"
       Margin="10,0,10,5"
       VerticalOptions="End"/>

C#

    private string statusMessage;
    public string StatusMessage { 
        get { return statusMessage; }
        set
        {
            statusMessage = value;
            OnPropertyChanged(nameof(StatusMessage));
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

该类扩展了INotifyPropertyChanged并修改了标签文本,我尝试了StatusMessage = "Status: ...";Device.BeginInvokeOnMainThread(() => { StatusMessage = "Status: ...";});

没有任何作用。

知道如何解决此问题吗?

编辑

按照主要帮助中的建议添加BindingContext = this;

现在,它不会从另一个线程调用的代码中更新标签,如下所示

private void OnEnableUser(bool authenticated)
{
    if (SynchronizationContext.Current != null)
    {
        [...]
    } else
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            OnEnableUser(authenticated);
        });
    }
}
c# xamarin.forms data-binding xamarin.android
1个回答
2
投票

您是否在后面的代码中设置了DataContext?

this.DataContext = classWithStatusMessage;

© www.soinside.com 2019 - 2024. All rights reserved.