Я обнаружил странное поведение при замене DataGridCheckBoxColumn на DataGridTemplateColumn, который содержит флажок.
<sdk:DataGrid Grid.Column="0" IsReadOnly="{Binding IsInReadOnlyMode}">
<sdk:DataGrid.Columns>
<sdk:DataGridCheckBoxColumn Header="Sales" Binding="{Binding Path=Sales}" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
Когда DataGrid доступен только для чтения, флажок также отключается. Код выше работает правильно.
Теперь, если я хочу добиться того же, используя DataGridTemplateColumn, флажок, по-видимому, не отключается, когда DataGrid находится в режиме ReadOnly.
<sdk:DataGrid Grid.Column="0" IsReadOnly="{Binding IsInReadOnlyMode}">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Sales" >
<sdk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<Grid>
<CheckBox>
<CheckBox.IsChecked>
<Binding Path="Sales" Mode="TwoWay"/>
</CheckBox.IsChecked>
</CheckBox>
</Grid>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellEditingTemplate>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<CheckBox>
<CheckBox.IsChecked>
<Binding Path="Sales" Mode="TwoWay"/>
</CheckBox.IsChecked>
</CheckBox>
</Grid>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
Еще одна вещь, которую я заметил, которая может помочь объяснить это, заключается в том, что флажок внутри DataGridCheckBoxColumn всегда отключен, пока вы фактически не дважды щелкнете содержащую ячейку. Только тогда, когда в режиме редактирования я могу получить доступ к флажку.
В CheckBox, который я создал внутри DataGridTemplateColumn, флажок, кажется, всегда активен и может быть отмечен галочкой, даже если дважды не щелкнуть ячейку.
Кстати, я использую его в Silverlight4, но я почти уверен, что он должен быть таким же в WPF.
Может кто-нибудь объяснить мне, почему это, пожалуйста?
Спасибо,