Xamarin 绑定更改时未更新XAML视图

Xamarin 绑定更改时未更新XAML视图,xamarin,mvvm,xamarin.forms,Xamarin,Mvvm,Xamarin.forms,我有一个绑定到ViewModel的XAML视图 当视图加载时,它将绑定上下文设置为对象(类型为GAME\u TBL) 加载ViewModel时,我等待一条带有唯一ID的消息 然后我使用它调用一个API并返回一个游戏对象,我将其转换为替换绑定的游戏对象 然而,即使调试告诉我这一切都正常,并且PropertyChanged启动,UI也不会更新 从这个角度来看: <ContentPage.BindingContext> <viewmodels:VotingViewModel

我有一个绑定到ViewModel的XAML视图

当视图加载时,它将绑定上下文设置为对象(类型为GAME\u TBL)

加载ViewModel时,我等待一条带有唯一ID的消息

然后我使用它调用一个API并返回一个游戏对象,我将其转换为替换绑定的游戏对象

然而,即使调试告诉我这一切都正常,并且PropertyChanged启动,UI也不会更新

从这个角度来看:

<ContentPage.BindingContext>

    <viewmodels:VotingViewModel/>

</ContentPage.BindingContext>

您需要在GAME_TBL的Model类中继承BaseViewModel。在类游戏中,您需要以以下方式指定每个属性:

    private string _gAME_NAME;
    public string GAME_NAME
    {
        get => _gAME_NAME;
        set
        {
            _gAME_NAME = value;
            OnPropertyChanged(nameof(GAME_NAME));
        }
    }

每个属性都应该有一个内部支持属性,如上所述。

nameof(\u currentGame)
是内部支持字段,而不是绑定到FFS的公共属性,这是固定的。非常感谢much@Journeyman1234你可以标记正确的答案,这将帮助更多有同样问题的人。我看不出如何,只有评论显示为答案,而不是回复我的帖子?
public class VotingViewModel : BaseViewModel

{

    GAME_TBL gameSelected;

    public GAME_TBL currentGame
    {
        get {

            return _currentGame;


        }


        set
        {
            _currentGame = value;
            OnPropertyChanged(nameof(_currentGame));
        }
    }

    public VotingViewModel()
    {
        MessagingCenter.Subscribe<Views.GamesView, string>(this, "Selected Game", (sender, arg) =>

        {
            gameID = Convert.ToInt32(arg);

            currentGame = loadGameInfo(); // this interacts with an API to set object specifics

        });

    }

}
    protected virtual void OnPropertyChanged(
    string propertyName = null)
    {
        System.Diagnostics.Debug.WriteLine("Debug: Name of property: " + propertyName);

        PropertyChanged?.Invoke(this,
        new PropertyChangedEventArgs(propertyName));


    }
    private string _gAME_NAME;
    public string GAME_NAME
    {
        get => _gAME_NAME;
        set
        {
            _gAME_NAME = value;
            OnPropertyChanged(nameof(GAME_NAME));
        }
    }