2017-02-03 81 views
0

在下面的代碼片段中,我有一個綁定在viewmodel上搜索「Checked」。但它不在我的ViewModel中,它在我的DataGrid ItemsSource中的項目上。DatagridTemplateColumn複選框綁定在視圖模型上搜索屬性

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <ContentControl HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Center"> 
       <CheckBox IsChecked="{Binding Checked, UpdateSourceTrigger=PropertyChanged}" /> 
      </ContentControl> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

如何使綁定使用ItemsSource中的項目? 我已經搜查高和低,但不能發現問題...

編輯:DataGrid的結合:

<DataGrid MaxHeight="250" VerticalScrollBarVisibility="Auto" ItemsSource="{Binding Questions}" CanUserAddRows="False" AutoGenerateColumns="False" Width="Auto"> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn ..... etc.. above snippet here 
     ... 
     </DataGridTemplateColumn..... 
    </DataGrid.Columns> 
</DataGrid> 

視圖模型:

public class Question 
{ 
    public bool Checked { get; set; } 
    public string Text { get; set; } 

    /// <summary> 
    /// Answers to show if the Question is checked 
    /// </summary> 
    public List<Answer> Answers { get; set; } 
} 

public class MyViewModel : ViewModelBase 
{ 
    private readonly IEnumerable<Question> _Questions; 
    /// <summary> 
    /// Questions for Definition of Done 
    /// </summary> 
    public IEnumerable<Question> Questions 
    { 
     get 
     { 
      return _Questions; 
     } 
    } 
} 
+0

顯示代碼視圖模型和Itemsouce結合。 –

+0

您需要在Question類上實現INotifyPropertyChanged,並在DataTemplate中給DataType =「{x:Type local:Question}」。 –

回答

0

應努力提供給您的結合Checked屬性實際上屬於您已設置或綁定DataGrid的ItemsSource屬性的IEnumerable<T>的類型T。確保source屬性的名稱是「Checked」,並且它有一個公共getter和setter。

如果檢查到的財產屬於視圖模型,你可以使用一個RelativeSource綁定到它:

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <ContentControl HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Center"> 
       <CheckBox IsChecked="{Binding DataContext.Checked, RelativeSource={RelativeSource AncestorType=DataGrid}, UpdateSourceTrigger=PropertyChanged}" /> 
      </ContentControl> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 
相關問題