2011-08-01 8 views
2

DataGridColumnの内部にあるCheckBoxを、チェックされているときにイメージに、チェックが外されているときにイメージに変換したい場合、どうすればよいですか? シモンズ:私のDataGridCheckBoxColumnは、このように定義されていますWPFでDataGridCheckBoxColumnの代わりにピクチャまたはアイコンを使用

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

Converterは、ブール値にバイトに変換されます。

答えて

3

ElementStyleEditingElementStyleプロパティを使用して、それに合うを作成して設定します。

<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

関連する問題