我有一个绑定到ViewModel的XAML视图
在加载视图时,它将绑定上下文设置为对象(类型为GAME_TBL)
加载ViewModel时,我等待一条带有唯一ID的消息
然后我用它来调用一个API并返回一个我铸造的游戏对象以替换绑定的对象
但是,即使调试也可以告诉我这一切正常,并且PropertyChanged会触发,UI永远不会更新
从视图中:
<ContentPage.BindingContext>
<viewmodels:VotingViewModel/>
</ContentPage.BindingContext>
.....
<Label Text="{Binding currentGame.GAME_NAME}" />
在VotingViewModel中:
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
});
}
}
在BaseViewModel中
protected virtual void OnPropertyChanged(
string propertyName = null)
{
System.Diagnostics.Debug.WriteLine("Debug: Name of property: " + propertyName);
PropertyChanged?.Invoke(this,
new PropertyChangedEventArgs(propertyName));
}
答案 0 :(得分:0)
您需要在GAME_TBL的模型类中继承BaseViewModel。 在类GAME_TBL中,您需要以以下方式指定每个属性:-
private string _gAME_NAME;
public string GAME_NAME
{
get => _gAME_NAME;
set
{
_gAME_NAME = value;
OnPropertyChanged(nameof(GAME_NAME));
}
}
每个属性都应具有内部支持属性。如上。 祝您编码愉快!