我有一个带有双精度数组的对象,如下所示:
private double[] _axes;
public double[] Axes
{
get
{
return _axes;
}
set
{
_axes = value;
if (PropertyChanged != null)
{
NotifyPropertyChanged("Axes[]");
}
}
}
此数组总是作为一个整体分配,因为我得到一个数据库对象的双重数组,并将其设置为Axes属性,如下所示:
object.Axes = GetDataRow(i);
(这只是为了证明我实际上分配了整个数组)
现在我在我的XAML中绑定它:
<Label Content="{Binding Path=Axes[0], UpdateSourceTrigger=PropertyChanged}"
我将窗口的DataContext设置为具有Axes属性的Object,并且UI在程序启动时从它接收一个值,我在对象的构造函数中分配。 然而,即使&#34; Axes []&#34;事件不断引发(我从另一个对象检查),没有其他值到达UI。
所以我的问题是:这甚至可以工作吗? Axes[]
与Axes[0]
不对应吗?可能是什么问题?
答案 0 :(得分:2)
通知中的商标名称不正确
if (PropertyChanged != null)
{
NotifyPropertyChanged("Axes");
}
删除括号。在这种情况下,这应解决您的问题。但是,建议使用ObservableCollection绑定对象列表。
答案 1 :(得分:0)
没有
您没有名为Axes[]
的属性,因此该事件无效。
你不应该绑定到数组;相反,使用ObservableCollection
,并将属性设为只读。
答案 2 :(得分:0)
绑定系统不会在数组中“进入”更新。您只需要通知它属性本身已更改。您当前正在说一个名为Axes[]
的属性已更改,但您没有具有该名称的属性。这只是Axes
public double[] Axes
{
get
{
return _axes;
}
set
{
_axes = value;
if (PropertyChanged != null)
{
NotifyPropertyChanged("Axes");
}
}
}
如果您确实需要知道阵列中的单个项目是否正在发生变化,那么您应该使用ObservableCollection
,绑定系统 知道如何“进入”。