You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms绑定FixedAssetId提示ViewModel不存在该属性如何解决

错误原因

  1. 你在ContentPage根节点设置了全局编译绑定类型为MainPageViewModel,但ListView的ItemTemplate内的绑定上下文是每条数据对应的Employee类,编译时系统会默认到MainPageViewModel里查找你绑定的属性,找不到自然就报错。
  2. 你要展示的是FixedId属性,但当前XAML里写的绑定是FixedAssetId,属性名不匹配也会触发找不到属性的错误。
  3. 异步方法调用不规范,可能触发死锁或者数据更新不及时的问题。

解决步骤

  1. 调整XAML的编译绑定配置
    先在ContentPage的命名空间声明里添加Employee类所在命名空间的引用,比如你的Employee放在App3.Models下就加:
xmlns:models="clr-namespace:App3.Models"

然后给DataTemplate指定单独的DataType:

<DataTemplate x:DataType="models:Employee">
  1. 匹配属性名
    如果你的Employee类里的ID属性是FixedId,就把Label的绑定改成对应名称,同时确认Employee类里的FixedId是公共属性:
public class Employee
{
    // 确保属性名和绑定的名称完全一致,大小写敏感
    public string FixedId { get; set; }
    // 其他属性
}
  1. 修正异步代码的问题
    不要用.Result去取异步方法的返回值,会导致UI线程死锁,把GetEmployees方法里两处result.Content.ReadAsStringAsync().Result改成await result.Content.ReadAsStringAsync()。
    另外RefreshCommand调用异步方法的时候要加await,把Command的定义改成:
public ICommand RefreshData { get; }

// 在你的ViewModel构造函数里添加初始化逻辑
public MainPageViewModel()
{
    RefreshData = new Command(async () =>
    {
        IsRefreshing = true;
        await GetEmployees();
        IsRefreshing = false;
    });
}

内容的提问来源于stack exchange,提问作者jude camp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:36:09