我有一个Datagrid,我在那里使用数据绑定。这个Datagrid显示需要打印的文档。我使用实体框架。
<Datagrid.Columns>
<DatagridTextColumn Header"Printed On" Binding="{Binding printed_on, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged, BindsDirectlyToSource=True, IsAsync=True}" >
<DatagridTextColumn Header"State" Binding="{Binding state1.description, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True,UpdateSourceTrigger=PropertyChanged, BindsDirectlyToSource=True, IsAsync=True}" >
</Datagrid.Columns>
字符串
如果我打印一个文档,我将字段printed_on设置为实际日期,并将状态设置为printed,这是枚举中的整数。字段state1.description将“to be printed”连接到0,“printed”连接到1,“error”连接到2。
如果我更新这两个值,我可以看到实际的Date on打印,但是state1.description在数据网格中似乎没有改变-仍然是“open”,而不是“printed”。
我还有另一个Datagrid,在这里我显示了已经打印了多少文档,以及必须打印多少文档。我有一个分部类,它扩展了实体框架创建的类,并在属性中返回文档的计数。但是如果我更改文档的状态,它们也不会更新。类中的属性看起来像
partial public class headers
public readonly property intStateOpen as integer
get
return from ... count
end property
型
end class
怎么办?
1条答案
按热度按时间fkaflof61#
我可以在你的XAML中看到一个错误。你说你的对象的
ID
正在更新,但是Description
没有。现在我猜你在例子中的Binding
的number
就是你所说的ID
(但是我不知道,因为你没有告诉我们)。如果这是正确的,那么你应该为你的
Description
属性使用类似的Binding
,并删除对state1
对象的引用:字符串
更新>
好的,如果你要写WPF,你需要使用
INotifyPropertyChanged
interface。这是用来通知数据绑定属性所做的更改,无论是对源对象还是目标对象,例如,来自代码隐藏/视图模型的数据或该数据绑定到的UI控件。您需要在视图模型中实现此接口(或者在视图中设置为DataContext
(或UserControl
)的类)。您可以按照MSDN上的链接页面中给出的示例进行操作。此外,在WPF中,你将真正受益于创建一个视图模型类,它包含你想要编辑和/或显示在UI中的所有属性,应该为你的视图设置为
DataContext
或UserControl
。我认为你可能会遇到问题,因为你的属性目前不是在一个地方都可以访问的。