首页 > 解决方案 > 如何在另一个 RadGridView 的 RowDetailsTemplate 中绑定一个 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>

标签: wpftelerikwpf-controlstelerik-grid

解决方案


您可以处理该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>

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


推荐阅读