.NET MAUI绑定Tarefa.Condutor未显示,求助排查绑定问题
.NET MAUI Label绑定不显示数据的问题排查
核心问题:命令执行后未更新ViewModel的Tarefa属性
你的GetTarefaFake命令仅查询到了目标TarefaDTO对象,但没有将结果赋值给ViewModel中的Tarefa属性,导致绑定的Tarefa.Condutor始终是初始化时的空值。
修复方案
修改GetTarefaFake命令,将查询结果赋值给Tarefa属性:
[RelayCommand] public async Task GetTarefaFake(int? idTarefa) { var listaTarefas = await GetTarefaFromFake(); var novatarefa = listaTarefas.Where(t => t.Id == idTarefa).SingleOrDefault(); // 关键步骤:更新ViewModel的Tarefa属性,触发UI绑定更新 Tarefa = novatarefa; }
注:此命令无需返回TarefaDTO,直接更新ViewModel属性即可触发绑定通知。
次要问题:重复设置BindingContext
你在XAML中已通过<ContentPage.BindingContext>配置了ViewModel,后台构造函数又重复创建了新的DashboardViewModel实例:
public DashboardPage() { InitializeComponent(); // 删除此行重复代码,XAML已完成BindingContext设置 // BindingContext = new DashboardViewModel(); }
该问题不会直接导致数据不显示,但会生成冗余实例,建议清理。
额外验证建议
- 确认
BaseViewModel的SetProperty方法正确实现了INotifyPropertyChanged接口的属性变更通知(从你的代码使用SetProperty来看,这部分应该无问题)。 - 给Label添加
FallbackValue验证绑定状态:
<Label x:Name="Teste" Text="{Binding Tarefa.Condutor, FallbackValue='绑定未生效'}" FontSize="14" TextColor="Black"></Label>
若显示“绑定未生效”说明绑定路径有误;若显示空值,则Tarefa.Condutor确实未被赋值。
内容的提问来源于stack exchange,提问作者João Marques
相关产品推荐
相关产品推荐

