当我点击一个不是wpf中datagrid一部分的复选框时,如何在datagrid中选中所有列标题复选框?

时间:2014-02-05 07:31:28

标签: wpf datagrid controls

我有一个列表框,其中我添加了两个控件,即一个复选框和一个datagrid并排作为listboxitem。我是以下列方式完成的:

代码背后:
listBox1.items.Add(DT)

这里dt是表名。

在Xaml中:

<ListBox Grid.Row="0" AlternationCount="2" MinHeight="305" HorizontalAlignment="Stretch"  Name="listBox1" VerticalAlignment="Stretch" MinWidth="537" >            
        <ListBox.ItemTemplate>                
            <DataTemplate>                    
                    <StackPanel Name="stkPanel" MinHeight="80" MinWidth="500" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="40"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <DataGrid Grid.Column="1" 
                                  AutoGenerateColumns="True" 
                                  MinHeight="75" 
                                  HorizontalAlignment="Center" 
                                  Name="dataGrid1" 
                                  VerticalAlignment="Stretch" 
                                  MinWidth="470" 
                                  MaxWidth="900" 
                                  ItemsSource="{Binding}" 
                                  IsReadOnly="True" Background="#E6BAB7B7">
                            <DataGrid.ColumnHeaderStyle>
                                <Style TargetType="DataGridColumnHeader">
                                    <Setter Property="ContentTemplate">
                                        <Setter.Value>
                                            <DataTemplate>
                                                <CheckBox Name="colCheckBox" Content="{Binding}"/>
                                            </DataTemplate>
                                        </Setter.Value>
                                    </Setter>
                                </Style>
                            </DataGrid.ColumnHeaderStyle>
                        </DataGrid>
                        <CheckBox  Grid.Column="0" Height="35" Width="25" Name="IsDone" HorizontalAlignment="Right" VerticalAlignment="Center" Checked="IsDone_Checked" />
                        </Grid>                        
                </StackPanel>                   
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox> 

现在,当我选中“IsDone”复选框,即listboxitem的一部分时,应检查数据网格(也是列表框项目)列标题中存在的所有复选框,以查找该特定列表框项目行。如果未选中datagrid列标题中的任何复选框,则同时也应取消选中“Isdone”复选框。您能建议我如何操作吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

Element Binding,这将解决问题..

<DataTemplate>                    
                <StackPanel Name="stkPanel" MinHeight="80" MinWidth="500" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="40"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <DataGrid Grid.Column="1" 
                              AutoGenerateColumns="True" 
                              MinHeight="75" 
                              HorizontalAlignment="Center" 
                              Name="dataGrid1" 
                              VerticalAlignment="Stretch" 
                              MinWidth="470" 
                              MaxWidth="900" 
                              ItemsSource="{Binding}" 
                              IsReadOnly="True" Background="#E6BAB7B7">
                        <DataGrid.ColumnHeaderStyle>
                            <Style TargetType="DataGridColumnHeader">
                                <Setter Property="ContentTemplate">
                                    <Setter.Value>
                                        <DataTemplate>
                                            <CheckBox Name="colCheckBox" IsChecked="{Binding IsChecked, ElementName=IsDone, Mode=OneWay}" Content="{Binding}"/>
                                        </DataTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </DataGrid.ColumnHeaderStyle>
                    </DataGrid>
                    <CheckBox  Grid.Column="0" Height="35" Width="25" x:Name="IsDone" HorizontalAlignment="Right" VerticalAlignment="Center" Checked="IsDone_Checked" />
                    </Grid>                        
            </StackPanel>                   
        </DataTemplate>