WPF Datagrid编辑单元格问题

koa*_*ala 4 wpf datagrid mvvm

当我ObservableCollection把我DataGrid与我绑在一起AutoGenerateColumns时.我可以双击要编辑的单元格,然后我可以编辑单元格中的文本.

但是当我设置AutoGenerateColumns为false并想要使用自定义时DataGridTextColumns,我也可以双击该单元格.但是那里的文本被删除了所以我有一个空字符串而不是我想要编辑的字符串.

有关这个问题的任何想法?

这是我的DataGrid:

<DataGrid ItemsSource="{Binding Tasks}" 
          Margin="0,10,30,0" 
          AutoGenerateColumns="False"
          Style="{DynamicResource DataGridStyle}"
          HorizontalScrollBarVisibility="Hidden"
          SelectedItem="{Binding SelectedTask}">

    <DataGrid.Columns>
        <DataGridTextColumn>
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="Margin" Value="6,0,0,0" />
                    <Setter Property="Text" Value="{Binding Description}" />
                    <Setter Property="VerticalAlignment" Value="Center" />
                </Style>
            </DataGridTextColumn.ElementStyle>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

编辑: 我也注意到当AutoGenerateColumns设置为false时,当我插入新行时,绑定的文本没有设置...当我设置AutoGeneratedColumns为true时,它绑定插入的文本.

J K*_*ing 6

数据网格具有datagrid模板列,该列具有CellTemplate和CellEditingTemplate.如果为两者定义模板,则也可以为两者明确设置绑定.也许那会解决你的问题.

这是包含两个模板的模板列示例

<DataGridTemplateColumn Header="TEXT" >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding YourBindingProperty}" Style="{StaticResource YourEditStyle}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox x:Name="EditTextbox" Text="{Binding YourBindingProperty, Mode=TwoWay, UpdateSourceTrigger=LostFocus, ValidatesOnDataErrors=True}" Style="{StaticResource YourEditStyle}">
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助