WPF 4 中DataGrid的模板列做双向数据绑定时,需要在绑定中指定UpdateSourceTrigger,如下:(WPFToolkit February 2010)
<DataGrid VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" Name="dataGrid1" AutoGenerateColumns="False" ItemsSource="{Binding}" HorizontalGridLinesBrush="{DynamicResource GridLinesBrush}" VerticalGridLinesBrush="{DynamicResource GridLinesBrush}" AlternatingRowBackground="{DynamicResource RowBackgroundBrush}" CanUserAddRows="False" CanUserResizeRows="False" CanUserDeleteRows="False" IsEnabled="True" Margin="0" RowHeight="20" CellStyle="{DynamicResource DataGridCellStyle2}" ColumnHeaderStyle="{DynamicResource DataGridColumnHeaderStyle1}" RowStyle="{DynamicResource DataGridRowStyle1}" RowHeaderStyle="{DynamicResource DataGridRowHeaderStyle1}" ItemsPanel="{DynamicResource ItemsPanelTemplate1}" RowHeaderWidth="0" IsSynchronizedWithCurrentItem="True" SelectionMode="Single" MinWidth="10" BorderThickness="0" GridLinesVisibility="Horizontal" ColumnHeaderHeight="22" ScrollViewer.CanContentScroll="False" > <DataGrid.Columns> <DataGridTemplateColumn Header="选择" CanUserReorder="False"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Cursor="Hand"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Header="标题" Binding="{Binding Title, Mode=OneWay}" /> </DataGrid.Columns> </DataGrid>
IsChecked="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
WPFToolkit February 2010则不需要。