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

时间:2019-06-11 05:35:19

标签: wpf telerik wpf-controls telerik-grid

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

主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>

1 个答案:

答案 0 :(得分:0)

您可以处理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()方法返回的对象的类型。