我的数据未显示在数据网格中

时间:2012-02-26 09:39:09

标签: c# wpf data-binding

dg.ItemsSource=GetList();

我调试程序并看到ItemSource收到完整的项目,但网格中根本没有显示任何内容。 我也想知道如何将我的数据网格控件停靠到WIndows中,这样一旦我调整父窗口大小,它也会自行调整大小? 谢谢

{的更新}

我是新学员。我认为只使用上面的源代码也可以自动将数据源与指定的控件绑定。我不打算创建一个循环来逐项插入网格。我会这样做,但我需要你帮我告诉我,我的想法是否正确。

我的datalist是一个包含字符串项的类列表

    public class Author
    {
        public string Name { get; set; }
        public DateTime PostedDate { get; set; }
        public string ProjectTitle { get; set; }
        public string Content { get; set; }
        public string Link { get; set; }
    }

1 个答案:

答案 0 :(得分:0)

检查网格上的AutoGenerateColumns,Height,Width,Horizo​​ntalAlignment和VerticalAlignment属性。如果您只是将它从工具箱拖放到XAML设计图面上,则会生成以下代码:

<DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="254,64,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" />

将其更改为:

<DataGrid HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch"/>

应解决您的两个问题。

编辑:您没有指定列表包含的元素类型,但请注意,自动生成的列将绑定到列表项的公共属性。

EDIT2: 现在您添加了列表项类型,这是一个示例:

MainWindow.xaml.cs:

public partial class MainWindow: Window
{
  public MainWindow()
  {
    InitializeComponent();

    List<Author> list = new List<Author> 
    {
      new Author { Name = "X Y", Content = "blah" },
      new Author { Name = "W Z", Content = "blah blah" },
      new Author { Name = "N N", Content = "blah blah blah" },
      new Author { Name = "M M", Content = "blah blah blah blah" },
    };
    dataGrid1.AutoGenerateColumns = true;
    dataGrid1.ItemsSource = list;
  }
}

public class Author
{
  public string Name { get; set; }
  public DateTime PostedDate { get; set; }
  public string ProjectTitle { get; set; }
  public string Content { get; set; }
  public string Link { get; set; }
}

MainWindow.xaml:

<Window x:Class="WpfApplication1.MainWindow"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          Title="MainWindow" Height="350" Width="525">
  <Grid>
     <DataGrid HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch"/>
  </Grid>
</Window>

输出:

Sample output