为什么我可以绑定到ListBox但不能绑定到WPF中的DataGrid?

时间:2009-02-26 14:36:52

标签: wpf datagrid

我在WPF中设置了LINQ-to-SQL / NorthWind。

ListBox显示数据,但DataGrid没有(没有错误,只是没有显示任何内容)。

我引用了WPFToolkit.dll。

为什么DataGrid不显示ListBox可以的数据?

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>

代码背后:

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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

这只是一个XAML问题,这解决了它:

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

答案 1 :(得分:0)

可能是因为您没有指定datagrid列。尝试将datagrid AutoGenerateColumns属性设置为true。