Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当ItemsSource已经绑定到DataGrid上时,如何将数据绑定到DataGridTemplateColumn中?_C#_Wpf_Mvvm_Datagrid - Fatal编程技术网

C# 当ItemsSource已经绑定到DataGrid上时,如何将数据绑定到DataGridTemplateColumn中?

C# 当ItemsSource已经绑定到DataGrid上时,如何将数据绑定到DataGridTemplateColumn中?,c#,wpf,mvvm,datagrid,C#,Wpf,Mvvm,Datagrid,我有一个DataGrid,它绑定到一个列表,如下所示 观点: <DataGrid Name="m_dgWorkItems" ItemsSource="{Binding WorkItems}" AutoGenerateColumns="False" CanUserAddRows="False" Margin="12,70,12,12"> <DataGrid.Columns> <DataGridCheckBoxColumn Header="Sel

我有一个DataGrid,它绑定到一个列表,如下所示

观点:

<DataGrid Name="m_dgWorkItems" ItemsSource="{Binding WorkItems}" AutoGenerateColumns="False" CanUserAddRows="False" Margin="12,70,12,12">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Selected" Binding="{Binding Selected}" />
        <DataGridTextColumn Header="Id" Binding="{Binding Id}" IsReadOnly="True" />
        <DataGridTextColumn Header="Summary" Binding="{Binding Summary}" IsReadOnly="True" />
        <DataGridTextColumn Header="State" Binding="{Binding State}" IsReadOnly="True" />
        <DataGridTextColumn Header="Owner" Binding="{Binding Owner}" IsReadOnly="True" />
    </DataGrid.Columns>
</DataGrid>
但是,程序从未进入该功能。我认为这是因为WorkItem属性不包含IsAllChecked属性。 我不知道如何指定绑定应该应用于DataContext而不是当前的ItemsSource=“{binding WorkItems}”

请查看此链接。
public List<WorkItem> WorkItems
{
    get { return m_workItems; }
    private set { m_workItems = value; RaisePropertyChanged("WorkItems"); }
}

public class WorkItem
{
    public bool Selected { get; set; }

    public string Id { get; set; }
    public string Summary { get; set; }
    public string State { get; set; }
    public string Owner { get; set; }
    public string Description { get; set; }
}
<DataGrid Name="m_dgWorkItems" ItemsSource="{Binding WorkItems}" AutoGenerateColumns="False" CanUserAddRows="False" Margin="12,70,12,12">
    <DataGrid.Columns>
        <!--<DataGridCheckBoxColumn Header="Selected" Binding="{Binding Selected}" />-->
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.Header >
                <CheckBox Content="Selected" IsChecked="{Binding IsAllChecked, Mode=TwoWay}"></CheckBox>
            </DataGridTemplateColumn.Header>
            <DataGridTemplateColumn.CellTemplate >
                <DataTemplate>
                    <CheckBox IsChecked="{Binding Selected}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Id" Binding="{Binding Id}" IsReadOnly="True" />
        <DataGridTextColumn Header="Summary" Binding="{Binding Summary}" IsReadOnly="True" />
        <DataGridTextColumn Header="State" Binding="{Binding State}" IsReadOnly="True" />
        <DataGridTextColumn Header="Owner" Binding="{Binding Owner}" IsReadOnly="True" />
    </DataGrid.Columns>
</DataGrid>
public bool IsAllChecked
{
    get { return m_bIsAllChecked; }
    set
    {
        m_bIsAllChecked = value;
        foreach (WorkItem workItem in m_workItems)
            workItem.Selected = value;
        RaisePropertyChanged("IsAllChecked");
    }
}