private void FunctionInstanceDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     FunctionStats.Sample sample = FunctionInstanceDataGrid.SelectedItem as FunctionStats.Sample;
     if (sample != null)
     {
         FunctionViewModel vm = DataContext as FunctionViewModel;
         if (vm != null)
         {
             vm.OnDataClick(this, sample.Index);
         }
     }
 }
        public void OnDataClick(FrameworkElement parent, int index)
        {
            if (Stats != null && 0 <= index && index < Stats.Samples.Count)
            {
                FunctionStats.Sample sample = Stats.Samples[index];

                Entry  maxEntry    = null;
                double maxDuration = 0;

                sample.Entries.ForEach(e => { if (maxDuration < e.Duration)
                                              {
                                                  maxDuration = e.Duration; maxEntry = e;
                                              }
                                       });
                if (maxEntry != null)
                {
                    EventNode maxNode = maxEntry.Frame.Root.FindNode(maxEntry);
                    parent.RaiseEvent(new TimeLine.FocusFrameEventArgs(TimeLine.FocusFrameEvent, new EventFrame(maxEntry.Frame, maxNode), null));
                }
            }
        }