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