Tri*_*daz 8 wpf datagrid row itemssource
CanUserAddRows="True"只有"工作"时,有已经在数据ItemsSource的DataGrid.如果恰好在原始项目列表中没有行,则即使我已设置,DataGrid也不会显示placeholder用于输入新项目的行CanUserAddRows="True".为什么?!
提前谢谢,Trindaz
这似乎是 WPF DataGrid 的一个已知问题。请参阅此处的讨论(从第 4 条评论开始)它似乎已在 .net 4 中修复。我已经在 3.5 和 4 (beta2) 框架上对此问题进行了一些测试。请参阅下面的结果:
首先我定义了 3 种类型的项目集合:
public class TestGridItems0 : ArrayList
{
}
public class TestGridItems1 : List<TestGridItem>
{
}
public class TestGridItems2<T> : List<TestGridItem>
{
}
Run Code Online (Sandbox Code Playgroud)
其中 TestGridItem 如下:
public class TestGridItem
{
public string One { get; set; }
public string Two { get; set; }
public string Three { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
.net 3.5
TestGridItems0 和 TestGridItems1 没有显示空集合的空行;其中 TestGridItems2 确实工作正常。
.net 4
只有 TestGridItems0 没有显示空集合的行;其他2个工作得很好。
网格的 xaml:
<my:DataGrid Name="dataGrid" AutoGenerateColumns="False" CanUserAddRows="True">
<my:DataGrid.Columns>
<my:DataGridTextColumn Binding="{Binding One}" Header="One" />
<my:DataGridTextColumn Binding="{Binding Two}" Header="Two" />
<my:DataGridTextColumn Binding="{Binding Three}" Header="Three" />
</my:DataGrid.Columns>
</my:DataGrid>
Run Code Online (Sandbox Code Playgroud)
以下是项目来源的分配方式:
dataGrid.ItemsSource = new TestGridItems0();
dataGrid.ItemsSource = new TestGridItems1();
dataGrid.ItemsSource = new TestGridItems2<TestGridItem>();
Run Code Online (Sandbox Code Playgroud)
希望这有帮助,问候
| 归档时间: |
|
| 查看次数: |
7943 次 |
| 最近记录: |