使用实体框架将数据绑定到引用表WPF MVVM

qgzx9mmu  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(83)

我有一个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
怎么办?

fkaflof6

fkaflof61#

我可以在你的XAML中看到一个错误。你说你的对象的ID正在更新,但是Description没有。现在我猜你在例子中的Bindingnumber就是你所说的ID(但是我不知道,因为你没有告诉我们)。
如果这是正确的,那么你应该为你的Description属性使用类似的Binding,并删除对state1对象的引用:

<DatagridTextColumn Header"State" Binding="{Binding description, Mode=OneWay, 
    NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True, 
    UpdateSourceTrigger=PropertyChanged, BindsDirectlyToSource=True, IsAsync=True}">

字符串
更新>
好的,如果你要写WPF,你需要使用INotifyPropertyChanged interface。这是用来通知数据绑定属性所做的更改,无论是对源对象还是目标对象,例如,来自代码隐藏/视图模型的数据或该数据绑定到的UI控件。您需要在视图模型中实现此接口(或者在视图中设置为DataContext(或UserControl)的类)。您可以按照MSDN上的链接页面中给出的示例进行操作。
此外,在WPF中,你将真正受益于创建一个视图模型类,它包含你想要编辑和/或显示在UI中的所有属性,应该为你的视图设置为DataContextUserControl。我认为你可能会遇到问题,因为你的属性目前不是在一个地方都可以访问的。

相关问题