【发布时间】:2013-11-30 16:11:59
【问题描述】:
我正在尝试以编程方式将项目添加到 DataGrid 并让用户编辑数据。但是,在尝试编辑数据时,我不断收到“此视图不允许 EditItem”错误。我尝试制作要添加 ObservableCollection 的类,但它似乎并没有改变错误。这些是我的代码的 sn-ps:
XAML:
<DataGrid x:Name="DataGridExample" HorizontalAlignment="Left" Margin="35,40,0,0" VerticalAlignment="Top" Height="220" Width="525" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" ClipboardContentBinding="{x:Null}" Header="Filename"/>
<DataGridTextColumn Binding="{Binding Path=Prefix}" ClipboardContentBinding="{x:Null}" Header="Prefix"/>
<DataGridCheckBoxColumn Binding="{Binding Path=Sign}" ClipboardContentBinding="{x:Null}" Header="Sign"/>
<DataGridCheckBoxColumn Binding="{Binding Path=Bin}" ClipboardContentBinding="{x:Null}" Header="Bin"/>
<DataGridTextColumn Binding="{Binding Path=FolderPath}" ClipboardContentBinding="{x:Null}" Header="Folderpath"/>
</DataGrid.Columns>
</DataGrid>
MainWindowClass 添加项:
Example newExample = new Example() { FolderPath = folderpath, Name = foldername, Prefix = foldername, Bin = false, Sign = false };
DataGridExample.Items.Add(newExample);
示例类:
public class Example : ObservableCollection<Example>
{
public string FolderPath { get; set; }
public string Name { get; set; }
public string Prefix { get; set; }
public bool Sign { get; set; }
public bool Bin { get; set; }
public override string ToString()
{
return Name;
}
}
【问题讨论】:
-
你不应该以这种方式使用 ObservableCollection,你需要有一个 ObservableCollection
不是每个项目都是一个 ObservableCollection 它自己。 -
@eranotzap 我该怎么做? (您能举一个班级的例子以及如何添加一个示例项目吗?)
-
您是否尝试附加一个BeginningEdithandler 并设置e.Cancel = true ?这对我来说很好。请注意,这个答案不是我自己的,它来自@ouflak -> stackoverflow.com/questions/3002063/…
-
@DenizZoeteman Exmplae : ObservableCollection
你的意思是说除了它自己的字段之外的每个示例都是其他示例的集合吗?
标签: c# wpf wpfdatagrid observablecollection