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; }
}
答案 0 :(得分:0)
检查网格上的AutoGenerateColumns,Height,Width,HorizontalAlignment和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>
输出: