C# MVVM绑定对象的属性

C# MVVM绑定对象的属性,c#,mvvm,xamarin.forms,prism,C#,Mvvm,Xamarin.forms,Prism,绑定有问题,如果我绑定字符串类型属性,一切正常,但是如果我试图绑定视图中的对象属性,属性xaml不会上传 没有任何错误或警告 更新模型 型号: public class Part : BindableObject { public int Id { get; set; } public string Brand { get; set; } public string _BrandImage; public string BrandImage {

绑定有问题,如果我绑定字符串类型属性,一切正常,但是如果我试图绑定视图中的对象属性,属性xaml不会上传

没有任何错误或警告

更新模型

型号:

     public class Part : BindableObject
{
    public int Id { get; set; }
    public string Brand { get; set; }

    public string _BrandImage;
    public string BrandImage
    {
        get { return _BrandImage; }
        set
        {
            _BrandImage = value;
            OnPropertyChanged();
        }
    }

    public string _Name;
    public string Name
    {
        get { return _Name; }
        set
        {
            _Name = value;
            OnPropertyChanged();
        }
    }
    public string Article { get; set; }
    public string Mfg { get; set; }
    public string Image { get; set; }
    public string Description { get; set; }
    public List<Offer> Offers { get; set; }   


        };

            return result;
        }

    }    

您需要继承'BindableObject',并将在视图中绑定的属性的setter'set{}'中更改的属性通知视图。我已经在下面修改了Name属性的代码,您可以根据其他字段的要求进行更改

public class Part : BindableObject
{
    public int Id { get; set; }
    public string Brand { get; set; }
    public string BrandImage { get; set; }

    private string _Name;
    public string Name
    {
        get { return _Name; }
        set
        {
            _Name = value;
            OnPropertyChanged();
        }
    }
    public string Article { get; set; }
    public string Mfg { get; set; }
    public string Image { get; set; }
    public string Description { get; set; }
    public List<Offer> Offers { get; set; }
}
公共类部分:BindableObject
{
公共int Id{get;set;}
公共字符串品牌{get;set;}
公共字符串BrandImage{get;set;}
私有字符串\u名称;
公共字符串名
{
获取{return\u Name;}
设置
{
_名称=值;
OnPropertyChanged();
}
}
公共字符串项目{get;set;}
公共字符串制造{get;set;}
公共字符串图像{get;set;}
公共字符串说明{get;set;}
公共列表提供{get;set;}
}

您需要继承'BindableObject',并通知视图在setter'set{}'中为视图中绑定的属性更改的属性。我已经在下面修改了Name属性的代码,您可以根据其他字段的要求进行更改

public class Part : BindableObject
{
    public int Id { get; set; }
    public string Brand { get; set; }
    public string BrandImage { get; set; }

    private string _Name;
    public string Name
    {
        get { return _Name; }
        set
        {
            _Name = value;
            OnPropertyChanged();
        }
    }
    public string Article { get; set; }
    public string Mfg { get; set; }
    public string Image { get; set; }
    public string Description { get; set; }
    public List<Offer> Offers { get; set; }
}
公共类部分:BindableObject
{
公共int Id{get;set;}
公共字符串品牌{get;set;}
公共字符串BrandImage{get;set;}
私有字符串\u名称;
公共字符串名
{
获取{return\u Name;}
设置
{
_名称=值;
OnPropertyChanged();
}
}
公共字符串项目{get;set;}
公共字符串制造{get;set;}
公共字符串图像{get;set;}
公共字符串说明{get;set;}
公共列表提供{get;set;}
}

从模型中删除此属性,这会有所帮助

 public List<Offer> Offers { get; set; }   
公共列表提供{get;set;}

从模型中删除此属性,这会有所帮助

 public List<Offer> Offers { get; set; }   
公共列表提供{get;set;}


Part=Part.GetPartById()不正确-此时零件将为空。还有:您是否忘记了
Source=“Binding Part.BrandImage”
中的大括号?您解决了这个问题还是希望我回答这个问题?还没有解决(大括号松动了,但不是主要问题)problem@KlausGütter为什么为空?行
Part=Part.GetPartById();
不可能是正确的-此时零件将为空。并且:您是否忘记了
Source=“Binding part.BrandImage”
中的花括号?您是否解决了此问题或希望我回答此问题?尚未解决(花括号松动,但不是主要的problem@KlausGütter为什么为null?更改视图中用于测试的两个属性对我没有帮助。你能解释一下吗?你能在这里发布你的代码吗?在开始主题中更新模型,同时发送名称,如OnPropertyChanged(nameof(BrandImage));norhig change我认为这里的主要问题是Part=Part.GetPartById();更改视图中用于测试的两个属性对我没有帮助。你能解释一下吗?你能在这里发布你的代码吗?在开始的topictry中更新模型并发送名称,比如OnPropertyChanged(nameof(BrandImage));norhig change我认为这里的主要问题是Part=Part.GetPartById();