次のように定義すると機能する単純なdatatgridがあります。
<DataGrid
ItemsSource="{Binding EmployeeCollectionViewSource.View}"
Style="{DynamicResource FTC_DataGridStyle}" AutoGenerateColumns="True" />
AutoGenerateColumns = "True"を削除し、列を次のように定義しようとすると、エラーが発生します。
<DataGrid
ItemsSource="{Binding EmployeeCollectionViewSource.View}"
Style="{DynamicResource FTC_DataGridStyle}" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding idCertification}" Header="ID" Width="50" IsReadOnly="True" CellStyle="{DynamicResource IDCellStyle}"/>
<DataGridTextColumn Binding="{Binding chrTitle}" Header="TITLE" Width="130" CellStyle="{DynamicResource TextCellStyle}"/>
<DataGridTextColumn Binding="{Binding chrDetail}" Header="DETAIL" Width="300" CellStyle="{DynamicResource TextCellStyle}"/>
<DataGridTextColumn Binding="{Binding chrProvider}" Header="PROVIDER" Width="130" CellStyle="{DynamicResource TextCellStyle}"/>
</DataGrid.Columns> />
</DataGrid>
私が得るエラーは次のとおりです。
{"'タイプ'System.Windows.Controls.ItemCollection'のコレクションに値を追加すると例外がスローされました。行番号「31」および行位置「32」。"}{"ItemsSourceの使用中は操作が無効です。代わりにItemsControl.ItemsSourceを使用して要素にアクセスおよび変更してください。"}
私はMVVMパターンを使用しており、EmployeeCollectionViewSourceのバインディングは、エンティティframemowrkから生成されたObservableCollectionから入力されるcollectionviewsourceです。
列を削除してバインディング名を再確認しましたが、このエラーの原因がわかりません。出力ウィンドウにエラーは表示されません。
質問 列を手動で定義できるように、このエラーを解決するのを手伝ってもらえますか?
追加 の詳細:以下は私のviewmodelクラスです:
Public Class EmployeeCertificationViewModel
Inherits ViewModelBase
#Region "DECLARATIONS"
Public Const CertificationCollectionPropertyName As String = "EmployeeCertifications"
Public Const EmployeeCollectionViewSourcePropertyName As String = "EmployeeCollectionViewSource"
''this is a holder for the employee data service
Private _EmployeeAccess As IEmployeeDataService
Private _EmployeeCertifications As New ObservableCollection(Of certification)
Private _EmployeeCollectionViewSource As New CollectionViewSource
''tracks if employee validation is coming from navigation or listview selecteditemchanged
Private FlagNavigating As Boolean = False
Private _NavigationService As INavigationService
Private _ModelService As IModelService
Private Context As FTC_Context
#End Region
#Region "PROPERTIES"
Public Property EmployeeCertifications As ObservableCollection(Of certification)
Get
Return Me._EmployeeCertifications
End Get
Set(ByVal value As ObservableCollection(Of certification))
Me._EmployeeCertifications = value
RaisePropertyChanged(CertificationCollectionPropertyName)
End Set
End Property
Public Property EmployeeCollectionViewSource As CollectionViewSource
Get
Return Me._EmployeeCollectionViewSource
End Get
Set(value As CollectionViewSource)
If _EmployeeCollectionViewSource Is value Then
Return
End If
_EmployeeCollectionViewSource = value
RaisePropertyChanged(EmployeeCollectionViewSourcePropertyName)
End Set
End Property
#End Region
#Region "COMMANDS"
#End Region
#Region "METHODS"
#End Region
#Region "CONSTRUCTOR"
Public Sub New(NavService As INavigationService, EmployeeService As IEmployeeDataService, ModelService As IModelService)
_ModelService = ModelService
Context = _ModelService.NewContext
_NavigationService = NavService
_EmployeeAccess = EmployeeService
EmployeeCertifications = EmployeeService.Get_Certification(Context)
EmployeeCollectionViewSource.Source = EmployeeCertifications
End Sub
#End Region
End Class