首页 文章

无法编辑我的DataGrid WPF Framework 4.5的单元格

提问于
浏览
6

我的ObservableCollection有三个项目,行在数据网格中始终显示 . 我无法将我的DataGrid的单个单元格转换为编辑模式 . 我尝试点击,点击,双击,F2,...,但整个行保持选中状态 . 如何让用户编辑数据网格 . 我在其他帖子中发现了类似的数据网格编辑问题,但没有人解决了我的问题 . 这是代码(WPF NetFramework 4.5) . 因此,只有第一列是不可编辑的(只读) .

<DataGrid Name="myDataGrid" Grid.Row="2" AutoGenerateColumns="False" ItemsSource="{Binding}" IsReadOnly="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="name" IsReadOnly="True" Width="200"  >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="Formulation" Width="100" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FormulationStr}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FormulationStr}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="volume Diff" Width="100" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding volumeDiff}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding volumeDiff}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

1 回答

  • 10

    您已将 TextBlock 放在 cell template 以及 cell editing template 中 . 这就是为什么你没有注意到按F2和双击单元格的任何变化,因为无论它总是 TextBlock 你无法编辑 .

    TextBox 放在你的_2962136中 - 就像这样 -

    <DataGridTemplateColumn Header="Formulation" Width="100" IsReadOnly="False">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding FormulationStr}" />
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
        <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <TextBox Text="{Binding FormulationStr}" />
            </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
    </DataGridTemplateColumn>
    

    或者只是简单地使用 DataGridTextColumn 代替 DataGridTemplateColumn ,它在内部提供支持您尝试通过上述代码实现的目标 -

    <DataGridTextColumn Header="Formulation" Width="100" IsReadOnly="False" Binding="{Binding FormulationStr}" />
    

相关问题