2011-06-24 95 views
0

更換DataGridCheckBoxColumn時更換DataGridCheckBoxColumn對包含一個複選框DataGridTemplateColumn時,我發現了一個奇怪的行爲。古怪的行爲與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該複選框,複選框似乎總是有效,可以打開和關閉,甚至沒有第一雙擊單元格中打勾。

順便說一句,我使用它在Silverlight4,但我敢肯定它必須在WPF相同。

有人可以向我解釋爲什麼這是好嗎? 謝謝,

回答

0

關於在DataGridCheckBoxColumn情況下,雙擊並在DataGridTemplateColumn情況下,沒有點擊,我想這是因爲發生了DataGridCheckBoxColumnCellTemplateEditingCellTemplate內會被不同的方式實現。在CellTemplate情況下,它被定義爲readonly,一旦你雙擊您在編輯模式下即EditingCellTemplate去,只有這樣,你可以修改checkbox,它是有道理的。

在爲你所規定的包括編輯和非編輯模板一樣,所以複選框隨時準備接受輸入

關於那爲什麼checkboxcustom template模式不遵循你的主要問題的情況下

現在在GridReadOnly選擇,我認爲這是由於發生的事實,一旦你定義自己cell templatescellEditing模板和non-editing celltemplate它成爲你的責任來處理細胞的只讀行爲。在網格上應用的選項(如只讀)不會對模板列案例產生任何影響