我正在使用以下xaml代码:
<ListView ItemsSource="{Binding Offsets, Mode=TwoWay}">
<ListView.View>
<GridView>
<GridViewColumn Header="X" Width="90">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding X, Mode=TwoWay}"
Width="70"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
(我知道这看起来有点草率,但我试图保持最小化)
我绑定的Offsets属性是public List<Point3D> { get; set;}
。 (using System.Windows.Media.Media3D
)。
因此每个Point3D都有一个公共的X,Y和Z属性。
我的ListView生成正常,但是当我尝试更改TextBox的值时,Datacontext没有更新。
我做错了什么?
答案 0 :(得分:2)
可能您忘记在模型或视图模型类中实现接口INotifyPropertyChanged
。
答案 1 :(得分:2)
如果你在谈论Point3D Structure
是的它有XYZ公共属性但我不认为它实现了INotifyPropertyChanged
答案 2 :(得分:0)
您需要在班级中实现INotifyPropertyChanged接口。你的装订模式很好。你应该能够看到变化。
public class YourClassName: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public ObservableCollection<YourModel> Offsets
{
get {return this.offsets;}
set
{
if (value != this.offsets)
{
this.offsets= value;
NotifyPropertyChanged("Offsets");
}
}
}
}