鼠标双击WPF Datagrid编辑单元格

Tom*_*Tom 4 c# wpf datagrid wpfdatagrid

在WPF中,我添加了一个DataGrid:

<DataGrid x:Name="dataGridProdotti" HorizontalAlignment="Left" Margin="10,56,0,0" VerticalAlignment="Top" Height="250" Width="426" SelectionChanged="dataGridProdotti_SelectionChanged" IsReadOnly="False"/>
Run Code Online (Sandbox Code Playgroud)

与财产

IsReadOnly="False"
Run Code Online (Sandbox Code Playgroud)

然后我做:

dataGridProdotti.ItemsSource = myList
Run Code Online (Sandbox Code Playgroud)

为什么我双击一个单元格,该单元格不进入编辑模式?

Vik*_*ose 5

您需要在DataGrid中添加DataColumns

<DataGrid x:Name="dataGridProdotti"
    HorizontalAlignment="Left"
              ItemsSource="{Binding Values}"
    Margin="10,10,0,192" Width="481" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn IsReadOnly="False" Binding="{Binding Path=Name}" Header="List" />
        </DataGrid.Columns>
    </DataGrid>
Run Code Online (Sandbox Code Playgroud)

并且也不要list<string>直接绑定到DataGrid的数据源,创建一个自定义类,然后绑定如下.

private List<Country> value = new List<Country>();

    public MainWindow()
    {
        InitializeComponent();
        this.Values.Add(new Country{ Name = "America"});
        this.Values.Add(new Country{Name = "Africa"});
        this.Values.Add(new Country{Name = "India"});
    }

    public List<Country> Values
    {
        get
        {
            return this.value;
        }
        set
        {
            this.value = value;
        }
    }
}

public class Country
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在DataGrid是可编辑的.


Saj*_*ran 1

我没有看到你的数据网格中有任何列,

只需将 DataGrid 控件拖放到视图中并将 ItemsSource 绑定到数据对象集合即可完成。DataGrid 提供了一个称为 AutoGenerateColumns 的功能,可以根据数据对象的公共属性自动生成列

或者,您可以通过将 AutoGenerateColumns 属性设置为 False 来手动定义列。在这种情况下,您必须在数据网格的 Columns 集合中定义列。

如果你想编辑你的数据网格单元格,你应该定义一个数据模板列,

<sdk:DataGridTemplateColumn   Header="Yourheadername" Width="150" CanUserResize="False" CanUserReorder="False">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock  Margin="2" VerticalAlignment="Center"  x:Name="txtblock" Text="{Binding Test,Mode=TwoWay}" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)