2012-05-23 140 views

回答

2

您可以使用DataGridTemplateColumn創建自定義checkboxcolumn

       <Custom:DataGridTemplateColumn x:Name="gdchk" Header="Test" MaxWidth="50"> 
           <Custom:DataGridTemplateColumn.CellTemplate > 
            <DataTemplate> 
             <CheckBox IsChecked="{Binding Path = classname}" HorizontalAlignment="Center" Style="{DynamicResource myCheckBoxStyle}"/> 
            </DataTemplate> 
           </Custom:DataGridTemplateColumn.CellTemplate> 
          </Custom:DataGridTemplateColumn> 

希望這有助於。

+0

難道不是沒有更直接的方式來做我想做的事,我的意思是,沒有使用DataGridTemplateColumn?因爲,在我的情況下,我真的需要使用DataGridCheckBoxColumn列類型... –

+0

@Jodha建議的另一種方式 – maran87

+0

經過大量的谷歌搜索這個主題後,我認爲這是不可能做我想做的,所以我接受你的答案。謝謝! –

2

試試這個

<DataGridCheckBoxColumn MinWidth="100" 
       Binding="{Binding Path=BoolValue}" 
       Header="Bool Column" 
       IsThreeState="True"> 
       <DataGridCheckBoxColumn.ElementStyle> 
        <Style TargetType="CheckBox"> 
         <Setter Property="Background" Value="{Binding BoolValueColour, Converter={StaticResource MyConverter}}" />  
        </Style> 
       </DataGridCheckBoxColumn.ElementStyle> 
</DataGridCheckBoxColumn> 
8

您可以簡單地使用你定義的樣式與ElementStyle屬性。在資源定義

風格:

<Style x:Key="MyCheckBoxStyle" TargetType="{x:Type CheckBox}"> ... </Style> 

我的DataGrid的複選框列:

<DataGridCheckBoxColumn ElementStyle="{StaticResource MyCheckBoxStyle}" Binding="{Binding someValue}" /> 
0

對我來說,沒有工作,直到我發現了以下解決方法:

<DataGridTemplateColumn 
    Header="Skip" Width="18" 
    IsReadOnly="False" CanUserResize="False"> 
    <DataGridTemplateColumn.CellTemplate > 
     <DataTemplate DataType="gfxModule:BatchPairItemModel"> 
      <CheckBox 

       Tag="{Binding}" 
       IsChecked="{Binding Tag.Skip, Mode=TwoWay, 
        RelativeSource={RelativeSource Self}}" 

       Template="{DynamicResource CheckBoxCircleXTemplate}" 
       ToolTip="Skip" 
      /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn>