Как связать RadGridView в RowDetailsTemplate другого RadGridView - PullRequest
0 голосов
/ 11 июня 2019

RadGridView привязан к списку (например, образцы). В RowDetailsTemplate я хочу показать еще один RadGridView, который будет отображать связанные записи из другого списка (например, Analysis).

Основной RadGridView связан с Code позади как:

GrdSamples.ItemsSource=SamplesViewModel.GetAll();

Как я могу связать RadGridView в RowDetailsTemplate (GrdAnalysis) таким же образом? И в каком случае я получу идентификатор ключа, чтобы я мог использовать что-то вроде:

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 голосов
/ 11 июня 2019

Вы можете обработать событие 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() в приведенном выше примере кода.

...