此视图列表不允许编辑项目
Edititem is not allowed for this view list
我已经尝试了好几个小时,但我无法编辑数据网格中的列数量,每当我这样做时都会给我一个错误提示
An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll
Additional information: 'EditItem' is not allowed for this view.
我的xaml密码是
<DataGrid EnableRowVirtualization="True" Grid.Row="3" Grid.ColumnSpan="2" AutoGenerateColumns="False" Name="DataGrid1" IsReadOnly="False" ItemsSource="{Binding Products}" Margin="10,10,10,10" PreviewKeyDown="DataGrid1_PreviewKeyDown" SelectionChanged="DataGrid1_SelectionChanged" CellEditEnding="DataGrid1_CellEditEnding" CanUserAddRows="True" CanUserDeleteRows="True" BeginningEdit="DataGrid1_BeginningEdit" >
<DataGrid.Columns>
<DataGridTextColumn Header="Item Name" IsReadOnly="True" Binding="{Binding Path=ItemName}" Width="*"></DataGridTextColumn>
<DataGridTextColumn Header="Item Price" IsReadOnly="True" Binding="{Binding Path=ItemPrice}" Width="*"></DataGridTextColumn>
<DataGridTextColumn x:Name="QuantityColumn" Header="Quantity" IsReadOnly="False" Binding="{Binding Path=Quantity, Mode=TwoWay}" Width="*"></DataGridTextColumn>
<DataGridTextColumn Header="Total Price" IsReadOnly="True" Binding="{Binding Path=TotalPrice}" Width="*">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
这是 C# 代码
List<AddItem> DATA = new List<AddItem>()
{
new AddItem()
{
ItemName = ItemName.Text.ToString(),
ItemPrice = float.Parse(ItemPrice.Text.ToString()),
Quantity = quantity.Text,
TotalPrice = CalculateTotalPrice()
}
};
DataGrid1.Items.Add(DATA);
public class AddItem
{
public string ItemName { get; set; }
public float ItemPrice { get; set; }
public string Price { get; set; }
public string Quantity { get; set; }
public decimal TotalPrice { get; set; }
}
我哪里错了?我试过observable collection还是没有解决办法?
任何帮助将不胜感激。
将 List<AddItem>
列表分配给 ItemSource
而不是 Add
,如下所示:
使用
DataGrid1.ItemsSource = DATA;
而不是
DataGrid1.Items.Add(DATA);
对代码的其他改进:
- 使用
decimal
输入 所有 价格(始终)
- 使用
int
类型作为数量,因为数量代表一个数字
我已经尝试了好几个小时,但我无法编辑数据网格中的列数量,每当我这样做时都会给我一个错误提示
An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll Additional information: 'EditItem' is not allowed for this view.
我的xaml密码是
<DataGrid EnableRowVirtualization="True" Grid.Row="3" Grid.ColumnSpan="2" AutoGenerateColumns="False" Name="DataGrid1" IsReadOnly="False" ItemsSource="{Binding Products}" Margin="10,10,10,10" PreviewKeyDown="DataGrid1_PreviewKeyDown" SelectionChanged="DataGrid1_SelectionChanged" CellEditEnding="DataGrid1_CellEditEnding" CanUserAddRows="True" CanUserDeleteRows="True" BeginningEdit="DataGrid1_BeginningEdit" >
<DataGrid.Columns>
<DataGridTextColumn Header="Item Name" IsReadOnly="True" Binding="{Binding Path=ItemName}" Width="*"></DataGridTextColumn>
<DataGridTextColumn Header="Item Price" IsReadOnly="True" Binding="{Binding Path=ItemPrice}" Width="*"></DataGridTextColumn>
<DataGridTextColumn x:Name="QuantityColumn" Header="Quantity" IsReadOnly="False" Binding="{Binding Path=Quantity, Mode=TwoWay}" Width="*"></DataGridTextColumn>
<DataGridTextColumn Header="Total Price" IsReadOnly="True" Binding="{Binding Path=TotalPrice}" Width="*">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
这是 C# 代码
List<AddItem> DATA = new List<AddItem>()
{
new AddItem()
{
ItemName = ItemName.Text.ToString(),
ItemPrice = float.Parse(ItemPrice.Text.ToString()),
Quantity = quantity.Text,
TotalPrice = CalculateTotalPrice()
}
};
DataGrid1.Items.Add(DATA);
public class AddItem
{
public string ItemName { get; set; }
public float ItemPrice { get; set; }
public string Price { get; set; }
public string Quantity { get; set; }
public decimal TotalPrice { get; set; }
}
我哪里错了?我试过observable collection还是没有解决办法? 任何帮助将不胜感激。
将 List<AddItem>
列表分配给 ItemSource
而不是 Add
,如下所示:
使用
DataGrid1.ItemsSource = DATA;
而不是
DataGrid1.Items.Add(DATA);
对代码的其他改进:
- 使用
decimal
输入 所有 价格(始终) - 使用
int
类型作为数量,因为数量代表一个数字