数据绑定出错的原因
2013-01-10 10:55
330 查看
使用XAML最经常碰到的问题是数据绑定出错。在经历了无数次绑定出错后我终于做了个决定,把调试出错的步骤给整理一下,免得下次再错的时候仍然不知道怎么办
闲话少说,以下步骤请大家参考:
1)核对变量信息是否正确。虽然是非常简单的一步,但如果你的xaml习惯手写而不是复制的话,最好还是做一下这个检查,免得后面查错查了好久都找不到这个最简单的原因。
2)查看绑定源/视觉树的DataContext属性。大多数的绑定错误都是由这个问题引起的,尤其碰到使用列表控件或引用Resource的时候更应当仔细检查。vs2010中可在xaml.cs中输入下面的式子查看确定按钮的DataContext
3)如果绑定仍然不正确的话,那么很有可能是绑定的数据项出了错误。在xaml.cs中利用VS的智能感知查看绑定的数据项是否存在:
如
以上是我做的小结,不完善之处还请各位看官多多发表意见。
闲话少说,以下步骤请大家参考:
1)核对变量信息是否正确。虽然是非常简单的一步,但如果你的xaml习惯手写而不是复制的话,最好还是做一下这个检查,免得后面查错查了好久都找不到这个最简单的原因。
2)查看绑定源/视觉树的DataContext属性。大多数的绑定错误都是由这个问题引起的,尤其碰到使用列表控件或引用Resource的时候更应当仔细检查。vs2010中可在xaml.cs中输入下面的式子查看确定按钮的DataContext
var d =okButton.DataContext as MyViewModel;或是使用Snoop等第三方控件查看
3)如果绑定仍然不正确的话,那么很有可能是绑定的数据项出了错误。在xaml.cs中利用VS的智能感知查看绑定的数据项是否存在:
var d =ok.DataContext as MyViewModel; int i=d.SelectedItem.Config.type //查看type是否存在4)如果使用了数据触发器,还应当查看DataTrigger的绑定是否设置正确的值。同样,这里我还是比较习惯在程序跑起来以后在xaml.cs文件中查看绑定的数据项是否正确。
如
<DataTrigger Binding="{Binding Path=SelectedItem.Config.type}" Value="0" > <Setter Property="Source" Value="..\Images\1.jpg"/> </DataTrigger>
private void dataGrid1_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { var d = okButton.DataContext as NewSpectrumSettingViewModel; int i = s.SelectedItem.Config.type; }
以上是我做的小结,不完善之处还请各位看官多多发表意见。
相关文章推荐
- 关于自定义实体集合绑定datagrid控件在进行编辑时出现错误"向原始数据存储区提交行时出错"的原因.
- Vue关于数据绑定出错
- 可能促使您决定创建自定义数据绑定控件的一些原因:
- asp.net为gridview绑定数据时出错“未将对象设置引用到对象实例”
- 解决DataList再次绑定数据时出错!
- 连续调用ReadRecord读取NVRAM的数据出错的原因
- 笔记:shmat 共享内存中,如果包含指针,指针数据出错的原因
- 笔记:shmat 共享内存中,如果包含指针,指针数据出错的原因
- DataTimePicker数据绑定遇到Null时异常的原因
- ListView绑定数据后界面显示一条数据原因
- 把数据保存到数据库附加表dede_addon时出错,原因是字段名不合法
- maximo 同步数据出错原因
- 把数据保存到数据库附加表dede_addon时出错,原因是字段名不合法
- 使用数据绑定控件GrideView的原因以及如何使用
- Vue关于数据绑定出错解决办法
- dedecms新建内容模型“把数据保存到数据库附加表时出错‘xxx’出错”错误的原因分析和解决方案(转)
- drepdownlist不能动态绑定数据的原因
- 在Hibernate中配置Hilo进行数据绑定测试时出错:org.hibernate.MappingException: Could not instantiate id generator
- Windows 8 开发系列- 自定义Gridview 绑定列表数据时出错
- [Cannot deserialize JSON array into type] NewtonSoft.Json解析数据出错原因