2013-11-25 70 views
3

期间是不允许我有以下电网WPF DataGrid的“刷新”一个AddNew或EditItem交易MVVM

<DataGrid 

     x:Name="TablesDataGrid" 
     Grid.Column="0" 
     Grid.Row="1" 
     ItemsSource="{Binding FilteredModels.View}" 
     AlternationCount="2" 
     AutoGenerateColumns="False" 
     CanUserSortColumns="True" 
     CanUserReorderColumns="False" 
    CanUserDeleteRows="False" 
    CanUserAddRows="False" 
    SelectionMode="Extended" 
     IsReadOnly="False" 
    SelectionUnit="FullRow" 
     RowHeight="25" 
    HorizontalAlignment="Stretch" 
    ColumnWidth="Auto"> 
      <DataGrid.Columns > 
       <DataGridCheckBoxColumn Width="*" Binding="{Binding IsChecked, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" IsReadOnly="False"> 
        <DataGridCheckBoxColumn.HeaderTemplate> 
         <DataTemplate> 
          <CheckBox IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.CheckAll}"/> 
         </DataTemplate> 
        </DataGridCheckBoxColumn.HeaderTemplate> 
       </DataGridCheckBoxColumn> 
       <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> 

,然后我有一个seachCommand与执行的视图模型上collectionViewSource FilteredModels搜索,然后调用

this.FilteredModels.View.Refresh(); 
当用户检查几个复选框和电网送入编辑模式,然后

执行,我们得到以下错误的搜索

WPF DataGrid 'Refresh' is not allowed during an AddNew or EditItem transaction 

有没有办法强制网格退出编辑模式时,复选框被选中,或者甚至当单击按钮或一些其他修复此?

谢谢!

回答

3

你应该能够将选定的项目转换为IEditableObject并在其上调用EndEdit或调用网格的CancelEdit方法。

13

我知道它来不及回答,而是为了别人谁是寻找答案

使用的CancelEdit或方法commitEdit的两个序列几次都是

//这个承诺

this.datagrid_layers.CommitEdit(); 
this.datagrid_layers.CommitEdit(); 

//用于取消

this.datagrid_layers.CancelEdit(); 
this.datagrid_layers.CancelEdit(); 
+2

为什么使用它只有一次不工作,我不知道,但在两次一个序列工作?任何想法... – Ash

+0

@Saad它不工作 – Kalanamith

+0

@Kalanamith代码? –