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<string>
直接绑定到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 - 以编程方式将单元格设置为编辑模式