2009-02-26 7 views
2

J'ai mis en place LINQ-to-SQL/NorthWind dans WPF. La ListBox affiche des données mais le DataGrid ne le fait pas (pas d'erreurs, n'affiche rien).Pourquoi puis-je lier à ListBox mais pas à DataGrid dans WPF?

J'ai fait référence à WPFToolkit.dll.

Pourquoi DataGrid n'affiche-t-il pas les données que ListBox peut?

XAML:

<Window x:Class="TestLinq343.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:dg="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 
    Title="Window1" Height="300" Width="300"> 
    <Window.Resources> 
     <DataTemplate x:Key="ShowCustomer"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding CategoryID}"/> 
       <TextBlock Text=": "/> 
       <TextBlock Text="{Binding ProductName}"/> 
      </StackPanel> 
     </DataTemplate> 
    </Window.Resources> 
    <Grid> 
     <dg:DataGrid x:Name="TheDataGrid" AutoGenerateColumns="True"></dg:DataGrid> 
     <ListBox x:Name="TheListBox" ItemTemplate="{StaticResource ShowCustomer}"/> 
    </Grid> 
</Window> 

Code derrière:

using System.Linq; 
using System.Windows; 
using TestLinq343.Model; 
using Microsoft.Windows.Controls; 

namespace TestLinq343 
{ 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 

      NorthwindDataContext db = new NorthwindDataContext(); 
      var sortedProducts = 
       from p in db.Products 
       orderby p.UnitsInStock descending 
       select p; 

      TheDataGrid.ItemsSource = sortedProducts; 
      TheListBox.ItemsSource = sortedProducts; 
     } 
    } 
} 

Répondre

1

Il était juste une question XAML, cela résout le:

<ScrollViewer> 
    <StackPanel> 
     <dg:DataGrid x:Name="TheDataGrid"/> 
     <ListView x:Name="TheListView" ItemTemplate="{StaticResource ShowCustomer}"/> 
    </StackPanel> 
</ScrollViewer> 
0

peut-être parce que vous ne spécifions colonnes DataGrid. essayez de définir la propriété dataagrids AutoGenerateColumns sur true.

+0

essayé, toujours vide, AutoGenerateColumns est vrai soit par défaut, dans la procédure pas à pas que je suis http://windowsclient.net/wpf/ wpf35/wpf-35sp1-toolkit-dataagrid-feature-walkthrough.aspx, il définit la ItemsSource dans le XAML mais cela ne devrait pas importer, devrait-il? –