删除行后 DataGrid 不刷新

发布于 2025-01-01 04:24:12 字数 3759 浏览 1 评论 0原文

我正在使用 PRISM 和 MEF 框架。 我有一个显示一些数据的数据网格,在它下面有 RowDetailsTemplate ,而后者又具有数据网格。现在,如果我尝试从 RowDetailsTemplate 下的数据网格中删除一行,则删除操作后 UI 不会刷新。换句话说,该行将被删除,但会留下空白空间,并且当前行下方的行不会向上移动。

下面是代码片段。

<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; } 
}

这里Items是ObservableCollection。

希望我的描述清楚。 如果您需要更多信息,请告诉我。 非常感谢任何帮助。 非常感谢您抽出时间。

谢谢,

麦迪。

I am using PRISM and MEF frameworks.
I have a datagrid which displays some data and underneath it has RowDetailsTemplate which in turn has datagrid. Now if I try to delete a row from the datagrid under the RowDetailsTemplate, UI is not getting refreshed after the delete operation. in other words the row is getting deleted, but a empty space is left and the Rows underneath the present row doesn't move up.

Below is the code snippet.

<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 Code snippet as follows:

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; } 
}

Here Items is ObservableCollection.

Hope I am clear with my description.
Kindly let me know if you need additional information.
Any help is greatly appreciated.
Thanks a lot for your time.

Thanks,

Maddy.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

物价感观 2025-01-08 04:24:12

删除行后,您需要重新绑定数据源。

You need to rebind the datasource after you deleted the row.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文