WPF DataGrid 绑定不响应 PropertyChanged
Posted
技术标签:
【中文标题】WPF DataGrid 绑定不响应 PropertyChanged【英文标题】:WPF DataGrid binding not responding to PropertyChanged 【发布时间】:2013-08-13 17:06:19 【问题描述】:我有这段代码可以将前端的数据网格绑定到我的视图模型中的 elementDetail 属性。 elementDetail 被定义为我自己的 INotifyPropertyChanged 类的一个实例。但是为什么 PropertyChanged 句柄总是为空呢?将数据表绑定到数据网格是否正确,数据网格应该响应数据表的更改?
调试 WPF 程序的最佳方法是什么?对于绑定,我开启了diag:PresentationTraceSources.TraceLevel=High,但是它提供的信息不是很多。
XAML
<Grid Name="myGrid" Background="#FFF3FF76">
<DataGrid Name="detailGrid"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Margin="10,57,0,0"
Width="Auto"
Height="56"
Background="#FFFFDF9F"
ItemsSource="Binding elementDetail, Mode=OneWay,UpdateSourceTrigger=PropertyChanged, diag:PresentationTraceSources.TraceLevel=High" />
</Grid>
.xaml 后面的代码
this.myGrid.DataContext = myViewModelInstance;
在我的视图模型中
public ObservableDataView elementDetail
get;
set;
修改数据表
elementDetail.data = dt;
我在这里定义了我的 INotifyPropertyChanged 类
public class ObservableDataView : INotifyPropertyChanged
private string _propertyName;
public ObservableDataView(string propertyName)
_propertyName = propertyName;
private DataTable _data;
public DataTable data
get return _data;
set
_data = value;
onChanged(_propertyName);
public void onChanged(String propertyName)
if (PropertyChanged != null)
PropertyChangedEventArgs e = new PropertyChangedEventArgs(propertyName);
PropertyChanged(this, e);
public event PropertyChangedEventHandler PropertyChanged;
编辑:回答我的问题
我应该说 onChange("data")
我还应该在我的绑定中添加 .data,如下所示
<DataGrid Name="detailGrid" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,57,0,0" Width="Auto" Height="56" Background="#FFFFDF9F" ItemsSource="Binding elementDetail.data, Mode=OneWay,UpdateSourceTrigger=PropertyChanged, diag:PresentationTraceSources.TraceLevel=High" />
它现在工作正常。有没有办法调试绑定或者有什么一般规则可以绑定?我发现 WPF 目前面临的主要问题是绑定错误。
【问题讨论】:
【参考方案1】:我认为你应该写:-
private DataTable _data;
public DataTable data
get
return _data;
set
_data = value;
onChanged("data");
【讨论】:
是的,它部分正确,我还必须在 .xaml 文件中的绑定中添加 .data。 你为什么不使用 Snoop(tool) 来调试你的 xaml 部分,它会告诉你所有关于你的控件绑定以上是关于WPF DataGrid 绑定不响应 PropertyChanged的主要内容,如果未能解决你的问题,请参考以下文章
在 MVVM 中的 Datagrid 中绑定 WPF 组合框不保存更改
在XAML代码中绑定数据时,WPF DataGrid ItemsSource绑定不显示数据