DataGrid не обновляется после удаления строки - PullRequest
0 голосов
/ 01 февраля 2012

Я использую PRISM и MEF.У меня есть сетка данных, которая отображает некоторые данные, а под ней RowDetailsTemplate , которая в свою очередь имеет сетку данных.Теперь, если я пытаюсь удалить строку из сетки данных в RowDetailsTemplate, пользовательский интерфейс не обновляется после операции удаления.другими словами, строка удаляется, но остается пустое пространство, и строки под текущей строкой не перемещаются вверх.

Ниже приведен фрагмент кода.

<Controls1:DataGrid x:Name="dgProposals"
 Grid.Row="1" ItemsSource="{Binding Items}" AutoGenerateColumns="False"   
  BorderThickness="0"
  CanUserResizeColumns="False" RowDetailsVisibilityMode="Visible">
<Controls1:DataGrid.Columns>
   <Controls1:DataGridTextColumn Binding="{Binding ProposalName}" Width="*"     
      CanUserSort="False" IsReadOnly="True" CanUserReorder="False" >              
    </Controls1:DataGridTextColumn>
    <Controls1:DataGridTextColumn Binding="{Binding DisplayProposalType}"
       Width="*" CanUserSort="False" IsReadOnly="True" CanUserReorder="False" >
    </Controls1:DataGridTextColumn>                
</Controls1:DataGrid.Columns>
<Controls1:DataGrid.RowDetailsTemplate >
    <DataTemplate>
       <Controls1:DataGrid x:Name="dgReports" ItemsSource="{Binding ReportList}"
    AutoGenerateColumns="False" BorderThickness="0"
    CanUserResizeColumns="False" HeadersVisibility="None">                        
          <Controls1:DataGrid.Columns>
              <Controls1:DataGridTextColumn Binding="{Binding Name}" Width="*" 
                 CanUserSort="False" IsReadOnly="True" CanUserReorder="False" >
              </Controls1:DataGridTextColumn>
              <Controls1:DataGridTemplateColumn Width="100" CanUserSort="False" 
                 CanUserReorder="False">
               <Controls1:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                       <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">                                            
                           <Button VerticalAlignment="Center" Cursor="Hand"
                               Command="{Binding DataSource.EditReportNameCommand, 
                               Source={StaticResource DataContextProxy}}"
                               CommandParameter="{Binding}" Margin="5,0">
                           </Button>
                         </StackPanel>
                     </DataTemplate>
                </Controls1:DataGridTemplateColumn.CellTemplate>
              </Controls1:DataGridTemplateColumn>
            </Controls1:DataGrid.Columns>
          </Controls1:DataGrid>
       </DataTemplate>
   </Controls1:DataGrid.RowDetailsTemplate>

Фрагмент кода BO следующим образом:

public class ProposalPreview : NotificationObject
{
    public string ProposalName { get; set; }
    public int PartyId { get; set; }
    public string PartyName { get; set; }       
    public string DisplayProposalType { get; set; }
    private ObservableCollection<ArchievedReport> reportList = null;
    public ObservableCollection<ArchievedReport> ReportList
    {
        get { return reportList; }
        set { reportList = value; }
    }
    public ProposalPreview()
    {

        ProposalName = "";            
        DisplayProposalType = String.Empty;            
        ReportList = new ObservableCollection<ArchievedReport>();
    }
}

public class ArchievedReport : NotificationObject
{
    private string name;
    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            RaisePropertyChanged("Name");
        }
    }
    public int ReportId { get; set; } 
}

Здесь Элементы - это ObservableCollection.

Надеюсь, что японятно с моим описанием.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.Любая помощь очень ценится.Большое спасибо за ваше время.

Спасибо,

Мэдди.

1 Ответ

0 голосов
/ 01 февраля 2012

Вам необходимо повторно привязать источник данных после удаления строки.

...