2011-08-01 29 views
2

我想將DataGridColumn中的CheckBox更改爲圖片,而對其進行檢查時,將另一個未選中的圖片更改爲圖片,我該怎麼辦? PS:我DataGridCheckBoxColumn的定義如下:在WPF中使用圖片或圖標代替DataGridCheckBoxColumn

<DataGridCheckBoxColumn Header="Priority" Binding="{Binding PRIORITY, Converter={StaticResource converter}}"/> 

轉換器是轉換字節爲布爾值。

回答

3

使用ElementStyleEditingElementStyle屬性爲適合該屬性的CheckBox創建和設置不同的Template

例如

<DataGridCheckBoxColumn Binding="{Binding IsActive}"> 
    <DataGridCheckBoxColumn.ElementStyle> 
     <Style TargetType="{x:Type CheckBox}"> 
      <Setter Property="IsEnabled" Value="False" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type CheckBox}"> 
         <Image MaxWidth="32" MaxHeight="32"> 
          <Image.Style> 
           <Style TargetType="{x:Type Image}"> 
            <Setter Property="Source" Value="Images/Error.ico" /> 
            <Style.Triggers> 
             <DataTrigger Binding="{Binding IsChecked, RelativeSource={RelativeSource AncestorType=CheckBox}}" Value="True"> 
              <Setter Property="Source" Value="Images/Default.ico" /> 
             </DataTrigger> 
            </Style.Triggers> 
           </Style> 
          </Image.Style> 
         </Image> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </DataGridCheckBoxColumn.ElementStyle> 
</DataGridCheckBoxColumn> 

這使得列顯示基於IsChecked圖像時,URI被硬編碼剛剛和複選框被禁用,因爲編輯在ElementStyle不綁定對象上改變的任何屬性。它的唯一目的是顯示適當的圖像。

EditingElementStyle此處未設置,所以如果用戶點擊該小區再次到正常的複選框出現可以選中或取消選中編輯。

Screencap

+0

我想補充的是,如果你希望用EditingElementStyle隱藏複選框,如果沒有這個 flux