DataGrid选择所有功能

时间:2018-04-22 08:45:28

标签: c# wpf xaml

我想知道我在这里做错了什么。我有一个名为已选择的列的DataGrid。在它旁边,我在 DataGridTemplateColumn 中有一个 CheckBox ,它也绑定到" Selected" 字段。这个想法是每当选中或取消选中复选框时,所选字段应分别显示 1 0 (即布尔值)。这很好用。

但是,我还想在DataGridTemplateColumn的 Header 部分放置另一个CheckBox,以便我能够检查或取消确认 DataGridTemplateColumn.CellTemplate 部分中的所有复选框。这是我遇到问题的地方,当选中或取消选中 DataGridTemplateColumn.CellTemplate 部分中的复选框时,所选字段中的相应值根本不会更改。好像绑定失败了。

我做错了什么?

以下是简单的XAML以及将数据加载到选定字段中的代码。

<Grid>
 <DataGrid Name="MyDataGrid" AutoGenerateColumns="False">
   <DataGrid.Columns>
      <DataGridTextColumn Width="100" Binding="{Binding Path=Selected}" Header="Selected"  />
        <DataGridTemplateColumn Width="80">
          <DataGridTemplateColumn.Header>
            <CheckBox Content=" Slect All" x:Name="headerCheckBox" />
          </DataGridTemplateColumn.Header>
          <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
             <CheckBox x:Name="Mychk" HorizontalAlignment="Center" IsChecked="{Binding Selected, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
              <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding ElementName=headerCheckBox, Path=IsChecked}" Value="True">
                   <Setter TargetName="Mychk" Property="IsChecked" Value="True" />
                </DataTrigger>
             </DataTemplate.Triggers>
           </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
    </DataGrid.Columns>
  </DataGrid>
</Grid>

VB.Net

Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
 Dim MyTable = New System.Data.DataTable
 MyTable.Columns.Add("Selected", GetType(Integer))
 For Each array As Object In New List(Of Integer)() From {0, 0, 0, 0, 0}
   MyTable.Rows.Add(array)
 Next
 MyDataGrid.ItemsSource = MyTable.DefaultView
End Sub

C#

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();   
            {
                System.Data.DataTable MyTable = new System.Data.DataTable();
                MyTable.Columns.Add("Selected", typeof(int));
                foreach (object array in new List<int> {0,0,0,0,0})
                {
                    MyTable.Rows.Add(array);
                }
                MyDataGrid.ItemsSource = MyTable.DefaultView;
            }
         }
    }

顺便说一下,我试图在没有代码的情况下在XAML中做任何事情(也没有转换器)

0 个答案:

没有答案