如何在另一个 RadGridView 的 RowDetailsTemplate 中绑定一个 RadGridView

How to bind a RadGridView in RowDetailsTemplate of another RadGridView

RadGridView 绑定到列表(例如,样本)。在 RowDetailsTemplate 中,我想显示另一个 RadGridView,它将显示来自另一个列表(例如,分析)的相关记录。

主 RadGridView 在代码后面绑定为:

GrdSamples.ItemsSource=SamplesViewModel.GetAll();

如何以同样的方式在 RowDetailsTemplate (GrdAnalysis) 中绑定 RadGridView?在哪个事件上我将获得密钥 ID,这样我就可以使用类似的东西:

var SampleID = ? 
GrdAnalysis.ItemsSource=AnalysisViewModel.Get(SampleID);

这是XAML,

 <telerik:RadGridView x:Name="GrdSamples" AutoGenerateColumns="False">
      <telerik:RadGridView.Columns>...</telerik:RadGridView.Columns>
         <telerik:RadGridView.RowDetailsTemplate>
          <DataTemplate>
               <telerik:RadGridView x:Name="GrdAnalysis" 
                AutoGenerateColumns="False">
          </DataTemplate>
      </telerik:RadGridView.RowDetailsTemplate> 
     </telerik:RadGridView>

您可以处理 Loaded 事件:

private void OnLoaded(object sender, RoutedEventArgs e)
{
    RadGridView inner = (RadGridView)sender;
    var sample = inner.DataContext as Sample;
    if (sample != null)
    {
        var SampleID = sample.Id;
        inner.ItemsSource = AnalysisViewModel.Get(SampleID);
    }
}

XAML:

<DataTemplate>
    <telerik:RadGridView x:Name="GrdAnalysis" Loaded="OnLoaded" AutoGenerateColumns="False">
</DataTemplate>

Sample是上面示例代码中SamplesViewModel.GetAll()方法返回的对象类型