使用MVVM时,WPF DataGridCheckBoxColumn无法单击

时间:2013-11-25 17:31:23

标签: wpf mvvm wpfdatagrid

我有以下数据网格

    <DataGrid
    Grid.Column="0" 
    Grid.Row="1"
            CanUserAddRows="False"
            CanUserDeleteRows="False"
            AutoGenerateColumns="False"
            SelectionUnit="FullRow"
            SelectionMode="Single"
    Height="auto"
    ScrollViewer.VerticalScrollBarVisibility="Auto"
    ScrollViewer.CanContentScroll="True"
            ItemsSource="{Binding TableSummaries }">
            <DataGrid.Columns>
                <DataGridCheckBoxColumn Width="*" Binding="{Binding IsChecked}"/>
                <DataGridTextColumn Header="Source Table" Binding="{Binding SourceTableFullName}" Width="4*"></DataGridTextColumn>
                <DataGridTextColumn Header="EDW Schema"  Binding="{Binding SchemaName}" Width="2*"></DataGridTextColumn>
                <DataGridTextColumn Header="EDW Table" Binding="{Binding TableName}" Width="4*"></DataGridTextColumn>
                <DataGridTextColumn Header="Status" Binding="{Binding Status}" Width="*"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>

并在viewmodel中我有属性

public bool IsChecked { get; set; }

当应用程序运行时,复选框显示但不可点击。我无法检查它们或对它们做任何事情

我错过了什么吗?

谢谢!

更新:

我添加了IsReadOnly =&#34; false&#34;到datagrid只是看它是否仍然是相同的结果。

2 个答案:

答案 0 :(得分:0)

如果您使用模板列

,该怎么办?
<DataGridTemplateColumn Header="CheckBox"  >
  <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
           <CheckBox Binding="{Binding IsChecked, Mode=TwoWay}"/>
       </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

这有用吗?

另外,运行应用程序时是否在输出窗口中出现任何绑定错误并实现了INotifyPropertyChanged?

答案 1 :(得分:0)

我发现问题TableSummaries是一个IEumerable,它需要实现IList,它运行得很好。