2014-12-17 2 views
0

다음 xaml은 "ItemsSource를 사용하기 전에 항목 컬렉션이 비어 있어야합니다."라는 예외를 제공합니다. 코드에서
뒤에 우리는 단순히 있습니다DataGridCell 스타일을 추가 할 때 예외가되는 이유는 무엇입니까?

public MainWindow() 
{ 
    InitializeComponent(); 

    DataContext = Customers; 

    Customers.Add(new Customer { Voornaam = "Tom", Achternaam = "Jones" }); 
    Customers.Add(new Customer { Voornaam = "Joe", Achternaam = "Thompson" }); 
    Customers.Add(new Customer { Voornaam = "Jill", Achternaam = "Smith" }); 
} 

private List<Customer> _customers = new List<Customer>(); 
public List<Customer> Customers { get { return _customers; }} 

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="True"> 
    <Style TargetType="{x:Type DataGridCell}" /> 
</DataGrid> 

스타일이 없으면 예외가 없다.
스타일이 비어 있다는 사실은 예외를 제공하는 최소 코드를 찾고 있었기 때문입니다. 세터를 추가해도 아무런 변화가 없습니다.
스타일 사용에 대한 reaseon은 자동 생성 된 열에 대한 controltemplate을 조정하고 싶습니다.

+0

프로그래밍 방식으로 WPF 스타일을 추가하려는 것 같습니다. 이 경우 XAML에서 해당 줄을 제거하고 C# 코드 숨김 모듈에서 스타일을 추가합니다. 친애하는, –

답변

3

당신의 스타일에 맞습니다. 문제는 DataGrid에 스타일을 적용하는 방법입니다.

스타일을 정의하는 방법은 "DataGridContent에 스타일을 삽입합시다."라고 말하면서 바로이 오류가 나타나는 것입니다.

ItemsSource를 사용하려면 항목 컬렉션이 비어 있어야합니다.

다음 코드를 사용하여 DataGridCellStyle 속성에 스타일을 대신 사용해보세요.

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="True"> 
    <DataGrid.CellStyle> 
     <Style TargetType="{x:Type DataGridCell}"> 
     </Style>   
    </DataGrid.CellStyle> 
</DataGrid> 
관련 문제