Xceed (http://wpftoolkit.codeplex.com/)에서 제공하는 Extended WPF Toolkit Community Edition에서 사용할 수있는 우수한 DataGrid를 사용하려고합니다. 간단한 DataGridControl 개체에 보고서의 결과를 표시하는 응용 프로그램이 있습니다. 사용자는 보고서 목록에서 보고서를 선택할 수 있으며 보고서에 연결된 DataTable을 사용하여 데이터 표가 동적으로 업데이트됩니다. 각 보고서 데이터 테이블의 열은 이름과 수량이 다를 수 있습니다. WPF의 기본 컨트롤을 사용하면 일반 MVVM 데이터 바인딩을 사용하여 정상적으로 작동합니다. Xceed에서 DataGridControl, 을 사용하면 데이터를 정렬하거나 그룹화하는 데 사용 된 경우를 제외하면이 방법을 사용할 수도 있습니다.Xceed DataGridControl이 DataTable에 바인딩되어 있고 정렬 된 열이 더 이상 존재하지 않으면 예외가 발생합니다.
열이 정렬되거나 그룹화되고 DataTable이 열을 포함하지 않는 것으로 업데이트되면 DataGridControl에서 정렬중인 열이 없다는 ArgumentException을 throw합니다. 여기에 예제 예외는 다음과 같습니다
System.ArgumentException이
메시지 = 'SAP_MATERIAL_NUMBER' '유형이라는 속성이 없습니다'처리되지 않은, 그래서 데이터를 수집을 정렬 할 수 없습니다.
자료 = PresentationFramework 스택 트레이스 : System.Windows.Data.BindingListCollectionView.ConvertSortDescriptionCollection에서 System.Windows.Data.BindingListCollectionView.RefreshOverride (AT (SortDescriptionCollection 종류) ) System.Windows.Data.CollectionView.Refresh에서 () System.Windows.Controls.ItemCollection.SetCollectionView에서 System.Windows.Data.CollectionView.DeferHelper.Dispose()에서 System.Windows.Data.CollectionView.EndDefer() (CollectionView 뷰)에서 System.Windows.Controls에서 .ItemCollection.SetItemsSource (IEnumerable 값) at System.Windows.Controls.ItemsCo ntrol.OnItemsSourceChanged (DependencyObject에 D, DependencyPropertyChangedEventArgs 전자) ...
여기 제어 정의하고 결합 내 현재 XAML의
:<xcdg:DataGridControl
Grid.Row="2"
AutoCreateColumns="True"
AutoRemoveColumnsAndDetailConfigurations="True"
ReadOnly="True"
x:Name="xceedReportResult"
ItemsSource="{Binding SelectedReport.Report.Result}"
FontSize="11">
<xcdg:DataGridControl.View>
<xcdg:TableflowView
ShowRowSelectorPane="False"
IsAnimatedColumnReorderingEnabled="True"
HorizontalGridLineBrush="LightGray"
VerticalGridLineBrush="LightGray"
IsAlternatingRowStyleEnabled="True"
ShowScrollTip="False">
<xcdg:TableflowView.Theme>
<xcdg:ClassicSystemColorTheme />
</xcdg:TableflowView.Theme>
</xcdg:TableflowView>
</xcdg:DataGridControl.View>
</xcdg:DataGridControl>
는 Xceed 포럼에서 몇 가지 조언 다음 ... I 'SortDescriptions 또는 GroupDescriptions을 지우려는 목적으로 새로운 보고서를 선택했지만 다음 코드를 실행하려고 시도했지만 올바르게 작동하지 않습니다.
ICollectionView source = xceedReportResult.ItemsSource as DataGridCollectionView;
if (source != null)
{
if (source.SortDescriptions != null)
{
source.SortDescriptions.Clear();
}
if (source.GroupDescriptions != null)
{
source.GroupDescriptions.Clear();
}
}
이 방법으로이 데이터 표를 사용한 사람이 있습니까?이 문제를 해결할 방법을 찾았습니까?