Data binding usercontrol的Changed属性不显示更改

Data binding usercontrol的Changed属性不显示更改,data-binding,winrt-xaml,win-universal-app,Data Binding,Winrt Xaml,Win Universal App,我有一个通用(windows)应用程序和一个FlipView控件 在我的MainPage方法中,我调用了一个填充FlipView的方法: foreach(var s in oc) { var bla = new ProductSet(s.Product1, s.Product2, s.Product3); flipView.Items.Add(bla); } 我还订阅了FlipView\u SelectionChanged,以便在一段时间后添加更多项目,以尝试获得这种延迟加载效

我有一个通用(windows)应用程序和一个
FlipView
控件

在我的
MainPage
方法中,我调用了一个填充FlipView的方法:

foreach(var s in oc)
{
    var bla = new ProductSet(s.Product1, s.Product2, s.Product3);
    flipView.Items.Add(bla);
}
我还订阅了
FlipView\u SelectionChanged
,以便在一段时间后添加更多项目,以尝试获得这种延迟加载效果

我的
ProductSet
类是一个用户控件(ProductSet.xaml)

当我更改当前flipview项目的
Product1
时,它不会显示更改

Product selectedProduct = (Product)gv.SelectedItem;
ProductSet ps = (NikkiSet)flipView.SelectedItem;
ps.Product1 = selectedProduct; // other object of class Product
我的usercontrol有一个我想更改的映像:

<Image Stretch="Fill" Source="{Binding Product1.Picture}" Name="imgProduct1" />

但这并没有改变。我错过了什么?

试试看

您需要在视图模型中添加一些更改,以便在属性值更改后重新绑定属性。使用下面的代码

public sealed partial class ProductSet : UserControl, INotifyPropertyChanged
{
    private Product product1;
    private Product product2;
    private Product product3;

    public Product Product1
    {
        get
        {
            return product1;
        }
        set
        {
            product1 = value;
            OnPropertyChanged("Product1");
        }
    }
    public Product Product2
    {
        get
        {
            return product2;
        }
        set
        {
            product2 = value;
            OnPropertyChanged("Product2");
        }
    }
    public Product Product3
    {
        get
        {
            return product3;
        }
        set
        {
            product3 = value;
            OnPropertyChanged("Product3");
        }
    }

    public ProductSet()
    {
        this.InitializeComponent();
    }

    public ProductSet(Product p1, Product p2, Product p3)
    {
        Product1 = p1;
        Product2 = p2;
        Product3 = p3;

        DataContext = this;
        this.InitializeComponent();
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

希望这对您有所帮助。

谢谢!我需要的是propfull片段而不是prop,当然还有
OnPropertyChanged
之类的东西!
public sealed partial class ProductSet : UserControl, INotifyPropertyChanged
{
    private Product product1;
    private Product product2;
    private Product product3;

    public Product Product1
    {
        get
        {
            return product1;
        }
        set
        {
            product1 = value;
            OnPropertyChanged("Product1");
        }
    }
    public Product Product2
    {
        get
        {
            return product2;
        }
        set
        {
            product2 = value;
            OnPropertyChanged("Product2");
        }
    }
    public Product Product3
    {
        get
        {
            return product3;
        }
        set
        {
            product3 = value;
            OnPropertyChanged("Product3");
        }
    }

    public ProductSet()
    {
        this.InitializeComponent();
    }

    public ProductSet(Product p1, Product p2, Product p3)
    {
        Product1 = p1;
        Product2 = p2;
        Product3 = p3;

        DataContext = this;
        this.InitializeComponent();
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}