【问题标题】:How to add a CheckBoxColumn into a DataGrid which is Auto created如何将 CheckBoxColumn 添加到自动创建的 DataGrid 中
【发布时间】:2019-12-21 12:58:19
【问题描述】:

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

我尝试使用 DataGridTemplateColumn 添加 CheckBox 列,但无法将复选框绑定到行状态。

<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>

【问题讨论】:

    标签: c# wpf datatable binding datagrid


    【解决方案1】:

    你可以使用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>
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多