【发布时间】:2014-11-29 07:26:24
【问题描述】:
我有一个要由用户填写的 DataGrid,XAML:
<DataGrid ItemsSource="{Binding Path=Input.InloopAangepast, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=TypeOppervlak}"/>
<DataGridTextColumn Binding="{Binding Path=TypeAfstroming}"/>
<DataGridTextColumn Binding="{Binding Path=Parameters[0].Double}"/>
<DataGridTextColumn Binding="{Binding Path=Parameters[1].Double}"/>
<DataGridTextColumn Binding="{Binding Path=Parameters[2].Double}"/>
<DataGridTextColumn Binding="{Binding Path=Parameters[3].Double}"/>
<DataGridTextColumn Binding="{Binding Path=Parameters[4].Double}"/>
<DataGridTextColumn Binding="{Binding Path=Parameters[5].Double}"/>
<DataGridTextColumn Binding="{Binding Path=Parameters[6].Double}"/>
</DataGrid.Columns>
</DataGrid>
视图模型:
InloopAangepast = new ObservableCollection<Inloop>();
还有:
public class Inloop : INotifyPropertyChanged
{
public Inloop()
{
Parameters = new ObservableCollection<InloopParameter>();
}
private string _typeOppervlak;
private string _typeAfstroming;
private string _omschrijving;
public ObservableCollection<InloopParameter> _parameters;
public string TypeOppervlak
{
get
{
return _typeOppervlak;
}
set
{
_typeOppervlak = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("TypeOppervlak"));
}
}
}
public string TypeAfstroming
{
get
{
return _typeAfstroming;
}
set
{
_typeAfstroming = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("TypeAfstroming"));
}
}
}
public string Omschrijving
{
get
{
return _omschrijving;
}
set
{
_omschrijving = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Omschrijving"));
}
}
}
public ObservableCollection<InloopParameter> Parameters
{
get
{
return _parameters;
}
set
{
_parameters = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Parameters"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
public class InloopParameter : INotifyPropertyChanged
{
public InloopParameter()
{
}
private string _naam;
private string _string;
private double? _double;
public string Naam
{
get
{
return _naam;
}
set
{
_naam = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Naam"));
}
}
}
public string String
{
get
{
return _string;
}
set
{
_string = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("String"));
}
}
}
public double? Double
{
get
{
return _double;
}
set
{
_double = value;
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Double"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
我可以很好地输入前两个字段(TypeOppervlak 和 TypeAfstroming),但是当我输入其他字段之一时,我收到错误消息“双向绑定需要 Path 或 XPath”。我做错了什么?
【问题讨论】:
标签: c# wpf data-binding datagrid