2012-01-31 1 views
0

PRISM 및 MEF 프레임 워크를 사용하고 있습니다. 일부 데이터를 표시하는 DataGrid가 있고 그 아래에 RowDetailsTemplate이 차례로 DataGrid를 갖습니다. 이제 RowDetailsTemplate 아래의 DataGrid에서 행을 삭제하려고하면 삭제 작업 후에 UI가 새로 고쳐지지 않습니다. 즉, 행이 삭제되지만 빈 공간이 남아 있고 현재 행 아래의 행이 위로 이동하지 않습니다.행을 삭제 한 후에 DataGrid가 새로 고쳐지지 않습니다.

다음은 코드 스 니펫입니다. 다음과 같이

<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에 있습니다.

희망 사항은 분명합니다. 추가 정보가 필요하면 알려 주시기 바랍니다. 도움을 주시면 대단히 감사하겠습니다. 시간 내 주셔서 감사합니다.

감사합니다.

Maddy.

답변

0

행을 삭제 한 후에 데이터 소스를 리 바인드해야합니다.

+0

MVVM 패턴을 사용하고 있는데 ViewModel에서 데이터 소스를 리 바인드 할 수있는 방법을 모르겠습니다. 당신은 당신의 대답을 자세히 설명해 주시겠습니까? – user1181458

관련 문제