WPF数据网格双击鼠标编辑单元格

5
在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个回答

6
您需要在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; }
}

现在的数据网格可以进行编辑。


1

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

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

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

如果你想编辑数据格单元格,应该定义一个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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接