鼠标双击WPF Datagrid编辑单元格

时间:2014-03-18 11:14:47

标签: 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"/>

带有属性

IsReadOnly="False"

然后我做:

dataGridProdotti.ItemsSource = myList

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

2 个答案:

答案 0 :(得分: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>

并且也不要将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; }
}

现在DataGrid是可编辑的。

答案 1 :(得分:0)

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

只需将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>