【问题标题】:Empty WPF DataGrid should be filled by user空的 WPF DataGrid 应由用户填充
【发布时间】:2017-03-03 11:04:19
【问题描述】:

我在 WPF 中使用由以下 XAML 代码插入的 DataGrid 视图

<DataGrid x:Name="DVA_Zyklus_DataGrid" IsManipulationEnabled="True"/>
</Grid>

现在我在 C# 代码中添加一列

DataGridTextColumn c0 = new DataGridTextColumn();
c0.Header = "Test";
c0.Binding = new Binding("TimeToRamp");
c0.Width = 110;
DVA_Zyklus_DataGrid.Columns.Add(c0);

还有一行

DVA_Zyklus_DataGrid.Items.Add(new DVA_Zyklus_DataGrid_Single_Pump_Item() { TimeToRamp = 0.0});

在哪里

public class DVA_Zyklus_DataGrid_Single_Pump_Item
{
   public double TimeToRamp { get; set; }
}

这可以正常工作,并产生一个值为 0 的单元格。现在用户应该能够更改此值。然而,选择单元格并按任意键会导致程序崩溃。

异常类型 System.InvalidOperationException,附加信息 EditItem 是不允许的。

知道如何允许用户这样做吗?

【问题讨论】:

  • 试试把IsManipulationEnabled="True"改成IsReadOnly="False"

标签: c# wpf xaml datagrid


【解决方案1】:

您应该设置 DataGrid 的 ItemsSource,而不是向 Items 属性插入项目:

var list = new ObservableCollection<DVA_Zyklus_DataGrid_Single_Pump_Item>();
list.Add(new DVA_Zyklus_DataGrid_Single_Pump_Item() { TimeToRamp = 0.0 });
dg.ItemsSource = list;

我认为最好遵循 MVVM 方法来填充 DataGrid。有很多关于它的帖子,例如this one

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    相关资源
    最近更新 更多