gpt4 book ai didi

c# - 当绑定(bind)到 WPF DataGrid 时,此 View 不允许使用 DataGrid 版本 'EditItem'

转载 作者:IT王子 更新时间:2023-10-29 04:46:23 25 4
gpt4 key购买 nike

我已经阅读了至少 4 个小时,似乎是列表类型,但我有一个情况:

具有集合属性的 ObservableCollection。

我定义了第一个DataGrid,并且在section

<DataGrid.RowDetailsTemplate>
<DataTemplate>
<!-- second Datagrid here, binding to Level2 property of my Observable collection -->
</DataTemplate>
<DataGrid.RowDetailsTemplate>

一切顺利,屏幕上的一切都如我所料......但是:

  1. 如果尝试修改 DataGrid1 单元格,它允许我。
  2. 如果尝试修改 DataGrid2 单元格,它会抛出此异常 'EditItem' is not allowed for this view

我错过了什么?

这是我的模型:

public partial class Level1
{
public Level1()
{
this.Level2 = new HashSet<Level2>();
}

public decimal IdLevel1 { get; set; }
public decimal IdLevel2 { get; set; }
public string StrDescripcionTipoAsociado {get;set;}

public virtual Level2 Level2{ get; set; }
}

public partial class Level2
{
public decimal IdLevel1 { get; set; }
public decimal IdLevel3 { get; set; }

public virtual Level3 Level3{ get; set; }
}

public partial class Level3
{
public decimal IdLevel3 { get; set; }
public decimal NumIdConcepto {get;set;}
public string StrDescripcionConcepto {get;set;}
}

编辑:XAML 代码:

    <DataGrid Grid.Row="1" 
ItemsSource="{Binding Level1}"
AutoGenerateColumns="False"
SelectionMode="Single"
GridLinesVisibility="Vertical"
CanUserAddRows="True"
CanUserDeleteRows="True"
x:Name="GridTipoAsociado">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Tipo de asociado" x:Name="TipoUsuarioSeleccionado">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Style="{StaticResource ResourceKey=FontElemNivel1}" Content="{Binding StrDescripcionTipoAsociado}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Style="{StaticResource ResourceKey=FontElemNivel2}" Text="{Binding StrDescripcionTipoAsociado }"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Grid.Row="1"
ItemsSource="{Binding Level2}"
AutoGenerateColumns="False"
SelectionMode="Single"
SelectionUnit="Cell"
GridLinesVisibility="Vertical"
CanUserAddRows="True"
CanUserDeleteRows="True"
x:Name="GridItems">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Id Item">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding NumIdConcepto}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Items">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Level3.StrDescripcionConcepto}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Level3.StrDescripcionConcepto}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>

最佳答案

我试过了,问题是你已经将 Level2 集合初始化为 Hashset<> . IEditableCollectionView.EditItem()尝试更新 Hashset<> 中的项目时抛出此错误.我将集合初始化为 List<>并且运行良好。

我不确定为什么它不能更新哈希集中的项目,需要更深入地研究它。但是改变 Hashset<>List<>将修复此错误。

希望对你有帮助

谢谢

关于c# - 当绑定(bind)到 WPF DataGrid 时,此 View 不允许使用 DataGrid 版本 'EditItem',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com