C# 如何使用复选框创建DatagridTemplateColumn并绑定到datasouce?

C# 如何使用复选框创建DatagridTemplateColumn并绑定到datasouce?,c#,wpf,xaml,checkbox,C#,Wpf,Xaml,Checkbox,如果我忽略了什么,请提前道歉——我仍然发现我的脚在使用Xaml,而不是windows窗体 我正在尝试将数据源绑定到DataGrid,其中一列是复选框。我的原始解决方案对此效果良好,但要求用户双击复选框: <Window x:Class="ExecBoxInvoices.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.mi

如果我忽略了什么,请提前道歉——我仍然发现我的脚在使用Xaml,而不是windows窗体

我正在尝试将数据源绑定到DataGrid,其中一列是复选框。我的原始解决方案对此效果良好,但要求用户双击复选框:

<Window x:Class="ExecBoxInvoices.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="507" Width="676">
<Grid Margin="0,0,0,51">
    <DataGrid x:Name="InvoiceDG" HorizontalAlignment="Left" Height="165" Margin="134,251,0,0" VerticalAlignment="Top" Width="400" ItemsSource="{Binding}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn Header="Generate" Binding="{Binding Generate}" Width="80"/>
            <DataGridTextColumn Header="Table_Number" Binding="{Binding Table_Number}" Width="120"/>
            <DataGridTextColumn Header="Transaction_Date" Binding="{Binding Transaction_Date}" Width="175"/>
            <DataGridTextColumn Header="Transaction_ID" Visibility="Hidden" Binding="{Binding Transaction_ID}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>
其中recordCollection是以下各项的列表:

class InvoiceRow
{
    public bool Generate { get; set; }
    public string Table_Number { get; set; }
    public string Transaction_Date { get; set; }
    public string Transaction_ID { get; set; }

    public InvoiceRow(bool generate, string table_Number, string transaction_Date, string transaction_ID)
    {
        this.Generate = generate;
        this.Table_Number = table_Number;
        this.Transaction_Date = transaction_Date;
        this.Transaction_ID = transaction_ID;
    }
}
试试这个:

<DataGridTemplateColumn Header="Generate" Width="60">
     <DataGridTemplateColumn.CellTemplate>
           <DataTemplate>
                <CheckBox IsChecked="{Binding Generate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
           </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>


此代码编译并创建一个单击复选框,但没有将更改反映回数据源:(我更新了原始帖子以显示数据源的设置位置。使用UpdateSourceTrigger:它不应该是“{Binding Generate,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}”哪种风格的XAML?您正在编写桌面或电话应用程序?WPF、Silverlight或Windows应用商店应用程序(WinRT)?桌面应用程序、WPF(visual studio 2012)
class InvoiceRow
{
    public bool Generate { get; set; }
    public string Table_Number { get; set; }
    public string Transaction_Date { get; set; }
    public string Transaction_ID { get; set; }

    public InvoiceRow(bool generate, string table_Number, string transaction_Date, string transaction_ID)
    {
        this.Generate = generate;
        this.Table_Number = table_Number;
        this.Transaction_Date = transaction_Date;
        this.Transaction_ID = transaction_ID;
    }
}
<DataGridTemplateColumn Header="Generate" Width="60">
     <DataGridTemplateColumn.CellTemplate>
           <DataTemplate>
                <CheckBox IsChecked="{Binding Generate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
           </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>