使用ElementStyle
和EditingElementStyle
屬性爲適合該屬性的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
此處未設置,所以如果用戶點擊該小區再次到正常的複選框出現可以選中或取消選中編輯。)
我想補充的是,如果你希望用EditingElementStyle隱藏複選框,如果沒有這個 –
flux