繁体   English   中英

如何将CheckBoxColumn添加到自动创建的DataGrid中

[英]How to add a CheckBoxColumn into a DataGrid which is Auto created

我的Wpf应用程序中有一个DataGrid。 此DataDrid: ItemSource="{Bindind SomeDataTable}"AutoGenerateColumns="True"现在,我想添加一个带有CheckBox的列,并将每个CheckBox的状态与IsSelected中每个Row的IsSelected属性绑定。

我试图用DataGridTemplateColumn添加一个CheckBox Cloumn,但是无法将CheckBox绑定到Rows的状态。

<DataGrid x:Name="TableDataGrid" 
          Margin="0,0,0,0" 
          CanUserAddRows="True"
          CanUserDeleteRows="True" 
          CanUserSortColumns="False" 
          GridLinesVisibility="All"
          AutoGenerateColumns="True" 
          ItemsSource="{Binding TableData.DataInTable, Mode=TwoWay}">
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="Background"Value="#e8e8ec"/>
            <Setter Property="FontWeight"Value="Bold"/>
            <Setter Property="HorizontalContentAlignment"Value="Center"/>
            <Setter Property="BorderBrush"Value="Black"/>
            <Setter Property="BorderThickness"Value="0.5"/>
        </Style>
    </DataGrid.ColumnHeaderStyle>
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox x:Name="DataCheckBox"></CheckBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

您可以使用AncestorType

<DataGrid x:Name="TableDataGrid" 
      Margin="0,0,0,0" 
      CanUserAddRows="True"
      CanUserDeleteRows="True" 
      CanUserSortColumns="False" 
      GridLinesVisibility="All"
      AutoGenerateColumns="True" 
      ItemsSource="{Binding MyList, Mode=TwoWay}">
        <DataGrid.ColumnHeaderStyle>
            <Style TargetType="{x:Type DataGridColumnHeader}">
                <Setter Property="Background" Value="#e8e8ec"/>
                <Setter Property="FontWeight" Value="Bold"/>
                <Setter Property="HorizontalContentAlignment" Value="Center"/>
                <Setter Property="BorderBrush" Value="Black"/>
                <Setter Property="BorderThickness" Value="0.5"/>
            </Style>
        </DataGrid.ColumnHeaderStyle>
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox  x:Name="DataCheckBox" IsChecked="{Binding Path=IsSelected, Mode=TwoWay,
              RelativeSource={RelativeSource FindAncestor,
              AncestorType={x:Type DataGridRow}}}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM