2009-03-24 5 views
8

AutoGenerateColumns WPF-DataGridはコードビハインドでLINQ-to-SQLにバインドされていますが、うまくいきます。WPF DataGridで独自の列を定義するにはどうすればよいですか?

しかし、私はAutoGenerateColumnsを脱いで、私自身の列を定義するとき、それは「アイテムコレクションはのItemsSourceを使用する前に、空である必要があります。」と言われます

しかし、私はので、私のXAMLでItemSourceを結合しませんよなぜそれが空でないのかわかりません。 独自の列を定義できるように変更する必要はありますか?

XAML:

<UserControl x:Class="TestDataGrid566.AppPages.ManageCustomers" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit" 
      Loaded="UserControl_Loaded"> 
    <toolkit:DataGrid x:Name="TheDataGrid" 
         CanUserAddRows="False" 
         AlternatingRowBackground="#ddd" 
         CanUserSortColumns="true" 
         PreviewKeyDown="TheDataGrid_PreviewKeyDown" 
         AutoGenerateColumns="False" 
         RowEditEnding="TheDataGrid_RowEditEnding"> 

     <toolkit:DataGridTextColumn Header="Contact Name" Width="SizeToCells" 
            Binding="{Binding ContactName}" 
            IsReadOnly="False"/> 
    </toolkit:DataGrid> 
</UserControl> 

コードビハインド:

public partial class ManageCustomers : UserControl 
{ 
    private NorthwindDataContext _db = new NorthwindDataContext(); 

    public ManageCustomers() 
    { 
     InitializeComponent(); 
    } 

    private void UserControl_Loaded(object sender, RoutedEventArgs e) 
    { 
     LoadData(); 
    } 

    public void LoadData() 
    { 
     var customers = from c in _db.Customers 
         select c; 
     TheDataGrid.ItemsSource = customers.ToList(); 
    } 
} 

答えて

22

あなたはDataGridに直接列を入れしようとしているが(そのためには、列を入れしようとしていますグリッドのItemsコレクションとそのエラーを説明しています)。 コレクションの中に入れる必要があります。

<toolkit:DataGrid x:Name="TheDataGrid" 
          CanUserAddRows="False" 
          AlternatingRowBackground="#ddd" 
          CanUserSortColumns="true" 
          PreviewKeyDown="TheDataGrid_PreviewKeyDown" 
          AutoGenerateColumns="False" 
          RowEditEnding="TheDataGrid_RowEditEnding"> 
    <toolkit:DataGrid.Columns>   
     <toolkit:DataGridTextColumn Header="Contact Name" Width="SizeToCells" 
             Binding="{Binding ContactName}" 
             IsReadOnly="False"/> 
    </toolkit:DataGrid.Columns> 
</toolkit:DataGrid> 
関連する問題