WPF C# DataGrid 编辑单元格

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18549673/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 09:33:14  来源:igfitidea点击:

WPF C# DataGrid edit cell

c#wpfxamldatagrid

提问by user231605

I have a problem with editing cells in a DataGrid.

我在编辑DataGrid.

When I double click in a cell, an exception is raised - InvalidOperationException 'EditItem' is not allowed for this view

当我双击一个单元格时,会引发异常 - InvalidOperationException 'EditItem' is not allowed for this view

I'm looking for the easiest way to edit cell in datagrid.

我正在寻找在数据网格中编辑单元格的最简单方法。

XAML-------------------------------------------------------------------------------XAML

XAML------------------------------------------------- ------------------------------XAML

<DataGrid x:Name="ZdarzeniaDataGrid" AutoGenerateColumns="False" CanUserAddRows="True" HorizontalAlignment="Left" Margin="71,398,0,0" VerticalAlignment="Top" Height="279" Width="1119">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding IdZdarzenia}" Header="Id Zdarzenia" Width="100"/>
                <DataGridTextColumn Binding="{Binding Gospodarze}"  Header="Gospodarze" Width="100"/>
                <DataGridTextColumn Binding="{Binding Go?cie}"  Header="Go?cie" Width="100"/>
                <DataGridTextColumn Binding="{Binding Kurs1}" Header="Kurs 1" Width="100"/>
                <DataGridTextColumn Binding="{Binding Kurs0}" Header="Kurs 0" Width="100"/>
                <DataGridTextColumn Binding="{Binding Kurs2}" Header="Kurs 2" Width="100"/>
                <DataGridTextColumn Binding="{Binding Kurs10}"  Header="Kurs 10" Width="100"/>
                <DataGridTextColumn Binding="{Binding Kurs20}" Header="Kurs 20" Width="100"/>
                <DataGridTextColumn Binding="{Binding Kurs12}" Header="Kurs 12" Width="100"/>
                <DataGridTextColumn Binding="{Binding DataZdarzenia}" Header="Data Zdarzenia" Width="100"/>
             </DataGrid.Columns>
        </DataGrid>

C# ------------------------------------------------------------------------------ C#

C# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C#

ZdarzeniaDataGrid.Items.Add(
    new { IdZdarzenia = napis.ItemArray.GetValue(0).ToString(),
          Gospodarze = napis2.ItemArray.GetValue(0).ToString(), 
          Go?cie = napis3.ItemArray.GetValue(0).ToString(), 
          Kurs1 = napis.ItemArray.GetValue(3).ToString(), 
          Kurs0 = napis.ItemArray.GetValue(4).ToString(), 
          Kurs2 = napis.ItemArray.GetValue(5).ToString(), 
          Kurs10 = napis.ItemArray.GetValue(6).ToString(), 
          Kurs20 = napis.ItemArray.GetValue(7).ToString(), 
          Kurs12 = napis.ItemArray.GetValue(8).ToString(), 
          DataZdarzenia = napis.ItemArray.GetValue(9).ToString() 
    });

采纳答案by Nitin

Create class with all the properties defined and set/bind the ItemsSource of Datagrid to the list of Data class.

创建具有定义的所有属性的类,并将 Datagrid 的 ItemsSource 设置/绑定到 Data 类的列表。

public class Data
    {
        public string    IdZdarzenia {get;set;}
         public string Gospodarze {get;set;}
        public string Go?cie {get;set;}
        public string Kurs1 {get;set;}
        public string Kurs0 {get;set;}
        public string Kurs2 {get;set;}
        public string Kurs10 {get;set;}
        public string Kurs20 {get;set;}
        public string Kurs12 {get;set;}
        public string DataZdarzenia { get; set; }
    }

Setting ItemSource

设置项目来源

    List<Data> dataSource = new List<Data>();
    dataSource.Add(new Data()
    {
                        IdZdarzenia = "a",
                        Gospodarze = "d",
                        Go?cie = "f",
                        Kurs1 = "g",
                        Kurs0 = "r",
                        Kurs2 = "gs",
                        Kurs10 = "sd",
                        Kurs20 = "sds",
                        Kurs12 = "sdss",
                        DataZdarzenia = "eeee"});
    ZdarzeniaDataGrid.ItemsSource = dataSource;

this should fix your problem.

这应该可以解决您的问题。

Thanks

谢谢