在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
为什么我双击一个单元格,该单元格没有进入编辑模式?
答案 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>