请注意这个使用Microsoft Visual Studio 2008制作的小型WPF C#程序的代码:
.xaml
.xaml
<Window x:Class="WpfDatagridTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfToolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
Title="Window1" Height="300" Width="300">
<Grid>
<WpfToolkit:DataGrid
x:Name="DataGrid_" ItemsSource="{Binding}"
SelectionMode="Extended"
CanUserAddRows="False" CanUserDeleteRows="False"
CanUserResizeRows="False" CanUserSortColumns="False"
AutoGenerateColumns="False"
RowHeaderWidth="17" RowHeight="25" />
</Grid>
</Window>
.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Windows.Controls;
namespace WpfDatagridTest
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
const int MAX = 10;
for(int i = 0; i < MAX; ++i)
DataGrid_.Columns.Add(new DataGridTextColumn()
{
Header = i
});
DataGrid_.Items.Add("");
}
}
}
这个程序展示了一个带有10列标题和一个空行的WPF工具包数据网格。
当选择空行的某个单元格并点击进行编辑时,会出现问题:程序崩溃。在Visual Studio中会弹出一个消息框,显示:“当前位置没有可用的源代码”。我想知道如何使数据网格中的单元格可编辑?
以下是异常和堆栈跟踪信息:
"System.InvalidOperationException"错误未被处理。错误信息为:此视图不允许“EditItem”操作。该错误源于PresentationFramework,堆栈跟踪信息如下:在System.Windows.Controls.ItemCollection中,System.ComponentModel.IEditableCollectionView接口的EditItem方法不可用;在Microsoft.Windows.Controls.DataGrid.cs的3396行,Microsoft.Windows.Controls.DataGrid类的EditRowItem方法执行失败;在Microsoft.Windows.Controls.DataGrid.cs的2208及2036行,Microsoft.Windows.Controls.DataGrid类的OnExecutedBeginEdit方法执行失败;在System.Windows.Input.CommandBinding类的OnExecuted方法中,第二个参数e是ExecutedRoutedEventArgs类型;在System.Windows.UIElement类的OnExecutedThunk方法中,第二个参数e也是ExecutedRoutedEventArgs类型;在Microsoft.Windows.Controls.DataGrid类的BeginEdit方法中,第一个参数editingEventArgs是RoutedEventArgs类型;在Microsoft.Windows.Controls.DataGridCell.cs的748及726行,Microsoft.Windows.Controls.DataGridCell类的OnAnyMouseLeftButtonDown方法执行失败;在System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler方法中,第二个参数e是MouseButtonEventArgs类型。"