【问题标题】:MVVM Binding a property of objectMVVM 绑定对象的属性
【发布时间】:2018-11-27 23:47:14
【问题描述】:

绑定有问题,如果我绑定字符串类型属性一切正常,但如果我尝试在查看属性 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;
        }

    }    

视图模型:

public class PartDetailViewModel :  BindableBase
    {
        private Part part;
        public Part Part
        {
            get { return part; }
            set { SetProperty(ref part, value); }
        }   

        public PartDetailViewModel(INavigationService navigationService) 
        {
            Part = part.GetPartById();
        }   
    }

【问题讨论】:

  • Part = part.GetPartById(); 行不正确 - 此时部分将为空。还有:你忘记Source="Binding Part.BrandImage" 中的花括号了吗?
  • 您解决了这个问题还是希望我回答这个问题?
  • 尚未解决(
  • 花括号松了,但这不是主要问题
  • @KlausGütter 为什么为空?

标签: c# mvvm xamarin.forms prism


【解决方案1】:

您需要继承 '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; }
}

【讨论】:

  • 更改两个属性,在视图中用于测试,没有帮助
  • 我没有得到。你可以解释吗?您可以在这里发布您的代码吗?
  • 开始主题中的更新模型
  • 尝试发送名称,例如 OnPropertyChanged(nameof(BrandImage));
  • norhig change 我认为这里的主要问题 Part = part.GetPartById();
【解决方案2】:

从模型中删除这个属性,这就是帮助

 public List<Offer> Offers { get; set; }   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2017-11-10
    • 2013-03-14
    相关资源
    最近更新 更多