WPF数据表格编辑单元格问题

4

当我将ObservableCollection绑定到DataGrid并将AutoGenerateColumns设置为true时,我可以双击要编辑的单元格,然后可以编辑单元格中的文本。

但是,当我将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>

编辑: 我还注意到,当 AutoGenerateColumns 设置为 false 时,插入新行时绑定的文本没有被设置...而当我将 AutoGenerateColumns 设置为 true 时,会绑定插入的文本。

1个回答

7
数据网格拥有一个数据网格模板列,该列具有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>

希望这有所帮助。

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