【发布时间】:2017-11-05 09:02:11
【问题描述】:
我有一个像这样的 DataGrid:
<DataGrid ItemsSource="{Binding Persons}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Age}" CellStyle="{StaticResource EditableDataGridCellStyle}" />
</DataGrid.Columns>
</DataGrid>
我用这段代码改变了我的 DataGridCells 的样式
<Style x:Key="EditableDataGridCellStyle" TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Text, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
但是,当我编辑 TextBox 的文本时,DataGrid 会显示新值,但底层的 Person 对象不会更新他的 Age。当我摆脱“EditableDataGridCellStyle”并手动(通过双击)编辑 DataGridCell 时,它会像我预期的那样工作。
如何确保编辑 TextBox 与编辑 DataGrid 单元格(即更新绑定)具有相同的效果?
【问题讨论】: