簡體   English   中英

如何以編程方式為DataGrid中的新行創建對象?

[英]How to programmatically create object for new row in DataGrid?

我有ObservableCollection<IInterface> ,它綁定到DataGrid。 IInterface是界面。

我想為用戶清楚地添加新行(沒有添加按鈕)。 我添加了CanUserAddRows="true"但只有當dataGrid綁定在ObservableCollection<MyClass>上時它才有效。

如何以編程方式為新行創建新對象?

要回答你的問題:“以編程方式”你只需在ObservableCollection添加/插入一個對象即可添加 - 但我想你想要你之前描述的自動添加功能。

問題是,框架無法知道如何創建接口的實例 - 它只知道如何使用default-constructors創建類型。 因此,您必須使用具體類型更改ObserveableCollection,否則您無法使用自動功能,並且必須在代碼隱藏中添加對象。

我最近有同樣的問題。 我在我的博客中發布了一個解決方案: 為具有非默認構造函數/接口的視圖模型啟用內聯添加記錄

它主要涉及創建自定義ListCollectionView(可以為其他人類似地完成)並將網格綁定到該視圖。 自定義視圖具有用於創建行的工廠方法,因為ListCollectionView中的默認實現不支持為沒有默認構造函數的接口或類添加行。

請注意,即使您不在MVVM視圖模型中使用CollectionView,而是使用常規列表或IBindingList,WPF也會為您創建特定的集合視圖。 查看更多詳細信息WPF的CollectionViewSource

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM