2017-02-03 9 views
0

次のスニペットでは、ビューモデルで「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> 

のViewModel:

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

表示するコードをViewModelにしてItemsouce結合のために。 –

+0

QuestionクラスでINotifyPropertyChangedを実装し、DataTemplateでDataType = "{x:Type local:Question}"を指定する必要があります。 –

答えて

0

あなたの結合があれば動作しますCheckedプロパティは実際にIEnumerable<T>のタイプTに属しており、DataGridのItemsSourceプロパティを設定またはバインドしています。ソースプロパティの名前が "Checked"で、パブリックゲッターとセッターがあることを確認してください。 Checkedプロパティは、ビューモデルに属している場合

あなたはそれにバインドする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> 
関連する問題