C# 当ItemsSource已经绑定到DataGrid上时,如何将数据绑定到DataGridTemplateColumn中?
我有一个DataGrid,它绑定到一个列表,如下所示 观点: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 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");
}
}