【发布时间】:2011-09-21 19:24:37
【问题描述】:
在将 DataGridCheckBoxColumn 替换为包含 Checkbox 的 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 处于只读模式时,复选框似乎不会自行禁用。
<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 中的复选框始终处于禁用状态,直到您实际双击包含的单元格。只有在编辑模式下,我才能访问复选框。
在我自己在 DataGridTemplateColumn 中创建的 CheckBox 中,该复选框似乎始终处于活动状态,甚至无需先双击单元格即可打开和关闭。
顺便说一句,我在 Silverlight4 中使用它,但我很确定它在 WPF 中必须相同。
有人可以向我解释为什么会这样吗? 谢谢,
【问题讨论】:
标签: c# .net wpf silverlight silverlight-4.0