Data binding usercontrol的Changed属性不显示更改
我有一个通用(windows)应用程序和一个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,以便在一段时间后添加更多项目,以尝试获得这种延迟加载效
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));
}
}