【发布时间】:2017-02-11 17:45:18
【问题描述】:
我一直在为 DataGrid 苦苦挣扎。
我需要从 SQL 读取数据并将它们填充到表中,并可以对其进行编辑(不需要将更改上传回数据库)。然后根据表格,生成报表。
我以前从未使用过 DataGrid,而且我对 WPF 概念也很陌生,但这里有两种我尝试过的方法。
第一个: dataGridItems.ItemsSource = previewItems; 其中previewItems 是Item 对象的列表。
public class Item
{
public string ItemName { get; set; }
public string ItemCode { get; set; }
public decimal ItemPrice { get; set; }
public Item(string itemName, string itemCode, decimal itemPrice = 0)
{
this.ItemName = itemName;
this.ItemCode = itemCode;
this.ItemPrice = itemPrice;
}
}
我可以读/写数据 - 正如我所愿。我遇到的这个解决方案的问题在于列大小,它会根据当前可见的数据动态调整大小。
第二个:在 XAML 中绑定。
<DataGrid x:Name="dataGridItems" IsReadOnly="True" SelectionMode="Single" HorizontalAlignment="Left" Margin="691,10,0,0" Grid.Row="2" VerticalAlignment="Top" Height="628" Width="791" MinWidth="260" MouseDoubleClick="dataGridItems_MouseDoubleClick">
<DataGrid.Columns>
<DataGridTextColumn Header="Kód" MinWidth="60" Width="10*" Binding="{Binding Path=ItemCode}"/>
<DataGridTextColumn Header="Název výkonu" MinWidth="200" Width="90*" Binding="{Binding Path=ItemName}"/>
</DataGrid.Columns>
</DataGrid>
然后在循环中,我正在添加项目
DataGridCustomer.Items.Add(customer);
这对我有用,直到我发现每当我双击DataGrid 单元格时应用程序就会崩溃。即使我设置了IsReadOnly="True",这也是我无法理解的。
我花了几个小时寻找解决方案 - 找到了一些,但要么我不明白,要么他们没有工作。
感谢您的帮助
【问题讨论】:
标签: c# wpf dynamic-columns