2015-07-01 27 views
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 =「{結合工作項}」

回答

0

你正在想必尋找的是綁定到數據上下文你的數據網格的祖先。看看this問與答

相關問題