在 Silverlight RIA 中绑定到数据网格的 itemsource 时通知属性更改
我在 silverlight 项目中有一个文本框和一个数据网格。如果数据网格中的项目计数为 0 或数据网格 itemssource 中的字段总和 = 0,则应启用文本框。
我已将文本框的 isEnabled 值绑定到数据网格 ItemsSource.SourceCollection,这给了我一个 IEnumerable。我制作了一个转换器,可以将此数据模型转换为布尔值。
当我打开 silverlight 页面并绑定数据网格时,转换器会运行并且一切都按预期工作,但如果我更改总和字段或在数据网格中添加/删除行,则不会发生任何情况。
我猜这与我的数据模型上的通知属性更改有关,但我不知道。
关于如何解决这个问题有什么想法吗?
I have a textbox and a datagrid in a silverlight project. The textbox should be enabled if the item count in the datagrid is 0 or the sum of a field in the datagrids itemssource = 0.
I've bound the isEnabled value of the textbox to the datagrids ItemsSource.SourceCollection which gives me an IEnumerable. I've made a converter that converts this datamodel to bool.
When I open my silverlight page and bind the datagrid, the converter runs and everything i working as expected, but nothing happens if i change the sum field or add/delete rows in the datagrid.
I'm guessing it has something to do with notify property changes on my datamodel, but I don't know.
Any thoughts on how to solve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我问了类似的问题,Luc 回答说你需要 INotifyPropertyChanged 事件实现,如果没有,项目更改将不会发生。
如何根据 SL4 中另一个单元格的内容使数据网格中的单元格只读?
I asked similar question and as Luc answered you need have INotifyPropertyChanged event implementation, if not item changes will not happen.
How to make a cell in a datagrid readonly based the content on another cell in SL4?
是的,当您绑定到对象的子属性时,您需要该特定属性的 PropertyChanged 事件,以便目标更新其值。
在您的示例中,ItemsSource 需要引发属性 SourceCollection 的 PropertyChanged 事件。
您可以做的是绑定到将被触发的 ItemsSource,然后在转换器中使用 Sourcecollection 值。
例如:
代码:
Yes, when you bind to a sub property of an object then you need a PropertyChanged event of that specific property in order for the target to update its value.
In your example the ItemsSource needs to raise a PropertyChanged event of the property SourceCollection.
What you could do is bind to ItemsSource wich will be triggered and then in your converter use the Sourcecollection value.
eg:
code: