xaml方:
<DataGrid Name="MyGrid" ItemsSource="{Binding}" />
我也尝试过:
<DataGrid Name="MyGrid" ItemsSource="{Binding MyObj}" />
背后的代码:
MyGrid.ItemsSource = new[] {
new MyObj{A = "aaa", B = "sss"},
new CompteurDate{A = "bbb", B = "eee"}
};
结果显示网格中的项目数正确,但行为空白。 我确定这很容易,但我卡住了: - / 有什么想法吗?
提前致谢, 埃里克
答案 0 :(得分:0)
我不是百分之百确定你在这里要做什么,但我发现有一些可能导致问题的事情
默认情况下,DataGrids会根据ItemsSource
中对象的属性自动生成列。问题是,ItemsSource
中有两个不同的对象,因此它不知道使用属性的对象。我甚至无法使用您提供的代码隐藏重现您的错误,因为它告诉我“找不到隐式类型数组的最佳类型”,尽管如果我指定ItemsSource
是object
数组,然后我得到你描述的结果。
第二部分令我困惑的是你在XAML和代码隐藏中都设置了ItemsSource
。您只需要设置一次。
现在你可以将代码隐藏中的DataGrid.DataContext
设置为一个对象,然后将XAML中的ItemsSource
绑定到该对象上存在的属性,那么也许这就是你所拥有的试图做。
答案 1 :(得分:0)
很抱歉Rachel,我没有正确发布:
MyGrid.ItemsSource = new[] {
new MyObj{A = "aaa", B = "sss"},
new CompteurDate{A = "bbb", B = "eee"}
};
应该是:
MyGrid.ItemsSource = new[] {
new MyObj{A = "aaa", B = "sss"},
new MyObj{A = "bbb", B = "eee"}
};
很抱歉......(我是
无论如何,我找到了自己的方式!我使用的对象类型是有原因的。惠特这不起作用:
public class MyObject
{
public string A;
public string B;
}
就像那样:
public class MyObject
{
public string A { get; set; }
public string B { get; set; }
}
所以我走出了我的世界代码,回到了我的现实生活实现,并且....它没有用,该死的。 我有一个IEnumerable而不是一个数组。长话短说,最后添加了一个“ToArray()”,但我不明白为什么。好吧,我的可枚举是迟到的执行,但是读取其ItemsSource的数据网格已经触发了这个执行,不是吗?
所以,问题已经解决了,但是如果有人有理性的光来施展这种魔力......
谢谢!