4
我有一個DataGrid,它綁定到一個列表如下。如何將ItemsSource綁定到DataGrid時將數據綁定到DataGridTemplateColumn?
的觀點:
<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>
視圖模型:
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; }
}
我想一個(UN)全選選項添加到頭部,並將其綁定到DataContext的方法。
因此,我改變了觀點:
<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");
}
}
然而,該方案從來沒有進入該功能。我認爲這是由於WorkItem屬性不包含IsAllChecked屬性。 我不知道如何指定綁定應在的DataContext被應用,而不是當前的ItemsSource =「{結合工作項}」