![](/img/trans.png)
[英]WPF datagrid, is there a way to create a new row for an object that has an array of strings
[英]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.