WPF Datagrid在鼠标双击时编辑单元格

Posted

技术标签:

【中文标题】WPF Datagrid在鼠标双击时编辑单元格【英文标题】:WPF Datagrid edit cell on mouse double click 【发布时间】:2014-04-24 00:50:52 【问题描述】:

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

<DataGrid x:Name="dataGridProdotti" HorizontalAlignment="Left" Margin="10,56,0,0" VerticalAlignment="Top" Height="250" Width="426" SelectionChanged="dataGridProdotti_SelectionChanged" IsReadOnly="False"/>

属性

IsReadOnly="False"

然后我做:

dataGridProdotti.ItemsSource = myList

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

【问题讨论】:

【参考方案1】:

你需要在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>

并且不要将list&lt;string&gt;直接绑定到DataGrid的数据源,创建一个自定义类,然后像下面这样绑定。

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

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

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


public class Country

    public string Name  get; set; 

现在 DataGrid 可以编辑了。

【讨论】:

【参考方案2】:

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

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

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

如果你想编辑你的datagrid单元格,你应该定义一个datatemplateColumn,

<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>

【讨论】:

以上是关于WPF Datagrid在鼠标双击时编辑单元格的主要内容,如果未能解决你的问题,请参考以下文章

WPF DataGrid - 以编程方式将单元格设置为编辑模式

我如何在WPF DataGrid上处理单元格双击事件,相当于Windows DataGrid的事件?

C#WPF根据数据长度编辑datagrid单元格颜色

获取wpf datagrid单元格编辑事件

突出显示 WPF DataGrid 的已编辑单元格

在WPF DataGrid中按Enter键时将焦点移动到下一个单元格?