Moo*_*ght 7 c# wpf datagrid mvvm
我有以下内容 DataGrid
<DataGrid CanUserDeleteRows="True"
CanUserAddRows="True"
SelectedItem="{Binding SelectedResource, Mode=TwoWay}"
ItemsSource="{Binding Path=Resources, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,
IsAsync=True}"> ... </<DataGrid>
Run Code Online (Sandbox Code Playgroud)
我使用MVVM模式绑定到一个ObservableCollection<ResourceViewModel> Resources
,这很好用.我有一个添加新行的按钮,这是通过添加一个新ResourceViewModel
的Resources
集合来完成的- 很棒.现在,我希望用户能够点击空的最后一行,这会自动在中创建一个新记录DataGrid
.
我已经确定的DataGrid
有CanUserAddRows=True
.我确保我绑定的collection Resources
(ResourceViewModel
)中的类有一个默认构造函数(没有参数),并且我确保集合类型不是readonly.当用户点击最后一行时,默认构造函数会触发,但要正确实例化ResourceViewModel
需要的新对象,请引用该Resources
集合的网格...
我想我可以AttachedCommand
在CellBeginEdit
事件中使用和然后在ResourceViewModel
那里添加一个新的可观察集合,有没有一种标准的方法来做到这一点?
请注意,我已阅读以下问题,这些对我没有帮助
编辑.事实证明,由于WPF中的错误,我在执行此操作时遇到了问题DataGrid
.见Nigel Spencer的博客.但是,他的修复目前对我不起作用......
据我了解,您知道如何正确地将新项目添加到数据绑定集合中,以将新项目添加到中,并且DataGrid
您的问题实际上涉及当用户单击最后一行时如何执行此操作DataGrid
。在视图模型中处理某些事件的一般方法是创建一个Attached Property
(如果尚不存在)来为您处理该事件。
例如,您可以创建一个将处理程序附加到相关事件的处理程序,以及另一个在调用事件处理程序时可以执行的Attached Property
类型。ICommand
然后,您可以在视图模型中编写该功能ICommand
(在其中将新项目添加到数据绑定集合中),并将您的ICommand
实现数据绑定到Attached ICommand Property
.
因为我相当确定您知道如何定义Attached Property
s,所以我不会通过向您展示来侮辱您。如果我误解了您的意思,或者没有表达清楚,请告诉我。
归档时间: |
|
查看次数: |
8338 次 |
最近记录: |