2016-04-15 7 views
1

Я показываю всплывающую подсказку с CursorModifier. Моя подсказка больше, чем SciChartSurface, и я использую ClipModifierSurface = "False", чтобы показать всю подсказку. Но в этом случае метки оси и полоса прокрутки находятся поверх всплывающей подсказки.
Описанная проблема видна на Рекомендуемые приложения> Научные диаграммы> Демо-версия осциллографа.
Есть ли способ принести всплывающую подсказку поверх поверхности диаграммы?Показать подсказку поверх оси и полосы прокрутки

Благодаря

ответ

0

Единственный способ сделать это, чтобы retemplate весь SciChartSurface двигаться PART_ChartModifierSurface выше PART_TopAxisArea/PART_LeftAxisArea/PART_BottomAxisArea/PART_RightAxisArea.

Шаблон управления по умолчанию для SciChartSurface приведен ниже. Преобразователи включены в библиотеке SciChart

<ControlTemplate TargetType="visuals:SciChartSurface"> 
    <Border Background="{TemplateBinding Background}" 
      Padding="{TemplateBinding Padding}" 
      ap:Device.SnapsToDevicePixels="True"> 

     <visuals:MainGrid x:Name="PART_MainGrid" ap:Device.SnapsToDevicePixels="True"> 
      <visuals:MainGrid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="*" MinWidth="10" /> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="Auto" /> 
      </visuals:MainGrid.ColumnDefinitions> 
      <visuals:MainGrid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="*" MinHeight="10" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
      </visuals:MainGrid.RowDefinitions> 

      <!-- Chart Title --> 
      <TextBlock Grid.Column="2" 
         Margin="0,0,0,9" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center" 
         FontSize="{TemplateBinding FontSize}" 
         FontWeight="{TemplateBinding FontWeight}" 
         Foreground="{TemplateBinding Foreground}" 
         Text="{TemplateBinding ChartTitle}" 
         Visibility="{Binding ChartTitle, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CollapseIfNullOrEmptyStringConverter}}" /> 

      <!-- GridLines panel (legacy, gridlines now in RenderSurface, but panel left for border and background --> 
      <axes:GridLinesPanel x:Name="PART_GridLinesArea" 
           Grid.Row="3" 
           Grid.Column="2" 
           HorizontalAlignment="Stretch" 
           VerticalAlignment="Stretch" 
           IsTabStop="False" 
           Style="{TemplateBinding GridLinesPanelStyle}" 
           ap:Device.SnapsToDevicePixels="True" /> 

      <themes:PolarPanel Grid.Row="3" 
           Grid.Column="2" 
           StretchToSize="{Binding IsPolarChart, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InvertBooleanConverter}}" 
           ap:Device.SnapsToDevicePixels="True"> 
       <Grid HorizontalAlignment="Stretch" 
         VerticalAlignment="Stretch" 
         ap:Device.SnapsToDevicePixels="True"> 

        <!-- Annotations behind chart series --> 
        <a:AnnotationSurface x:Name="PART_AnnotationsUnderlaySurface" 
             HorizontalAlignment="Stretch" 
             VerticalAlignment="Stretch" 
             ap:ClipToBoundsHelper.ClipToEllipseBounds="{TemplateBinding IsPolarChart}" 
             ap:ClipToBoundsHelper.ClipToBounds="{TemplateBinding ClipUnderlayAnnotations}" 
             ap:Device.SnapsToDevicePixels="True" /> 

        <!-- Render Surface (Chart Series) --> 
        <ContentControl HorizontalContentAlignment="Stretch" 
            VerticalContentAlignment="Stretch" 
            Content="{TemplateBinding RenderSurface}" 
            IsTabStop="False" 
            ap:ClipToBoundsHelper.ClipToEllipseBounds="{TemplateBinding IsPolarChart}" 
            ap:Device.SnapsToDevicePixels="True" /> 

        <axes:AxisArea x:Name="PART_CenterYAxisArea" 
            ap:ClipToBoundsHelper.ClipToEllipseBounds="{TemplateBinding IsPolarChart}" 
            ItemsPanel="{TemplateBinding CenterYAxesPanelTemplate}" 
            ap:Device.SnapsToDevicePixels="True" /> 

        <!-- Annotations over the chart series --> 
        <a:AnnotationSurface x:Name="PART_AnnotationsOverlaySurface" 
             HorizontalAlignment="Stretch" 
             VerticalAlignment="Stretch" 
             ap:ClipToBoundsHelper.ClipToEllipseBounds="{TemplateBinding IsPolarChart}" 
             ap:ClipToBoundsHelper.ClipToBounds="{TemplateBinding ClipOverlayAnnotations}" 
             ap:Device.SnapsToDevicePixels="True" /> 

        <!-- Modifier canvas, e.g. rubber band rectangles, rollover --> 
        <visuals:ChartModifierSurface x:Name="PART_ChartModifierSurface" 
                HorizontalAlignment="Stretch" 
                VerticalAlignment="Stretch" 
                ClipToBounds="{TemplateBinding ClipModifierSurface}" 
                IsPolarChart="{TemplateBinding IsPolarChart}" 
                IsTabStop="False" 
                ap:Device.SnapsToDevicePixels="True" /> 

        <!-- Adorners, e.g. annotation resize --> 
        <Canvas x:Name="PART_ChartAdornerLayer" 
          HorizontalAlignment="Stretch" 
          VerticalAlignment="Stretch" 
          ap:ClipToBoundsHelper.ClipToBounds="{TemplateBinding ClipModifierSurface}" 
          ap:ClipToBoundsHelper.ClipToEllipseBounds="{TemplateBinding IsPolarChart}" 
          ap:Device.SnapsToDevicePixels="True"> 
         <Canvas.Resources> 
          <Style TargetType="Thumb"> 
           <Setter Property="BorderThickness" Value="2" /> 
           <Setter Property="IsTabStop" Value="False" /> 
           <Setter Property="Cursor" Value="Hand" /> 
           <Setter Property="BorderBrush" Value="{me:ThemeBinding DefaultAnnotationsGripsBorderBrush}" /> 
           <Setter Property="Background" Value="{me:ThemeBinding DefaultAnnotationsGripsBackroundBrush}" /> 
           <Setter Property="Width" Value="{s:Static Member=visuals:ManipulationMargins.AnnotationResizingMaxSize}" /> 
           <Setter Property="Height" Value="{s:Static Member=visuals:ManipulationMargins.AnnotationResizingMaxSize}" /> 
           <Setter Property="Template"> 
            <Setter.Value> 
             <ControlTemplate TargetType="Thumb"> 
              <Grid> 
               <VisualStateManager.VisualStateGroups> 
                <VisualStateGroup x:Name="CommonStates"> 
                 <VisualState x:Name="Normal" /> 
                 <VisualState x:Name="MouseOver"> 
                  <Storyboard> 
                   <DoubleAnimation Duration="0" 
                       Storyboard.TargetName="Ellipse" 
                       Storyboard.TargetProperty="Width" 
                       To="{s:Static Member=visuals:ManipulationMargins.AnnotationResizingMaxSize}" /> 
                   <DoubleAnimation Duration="0" 
                       Storyboard.TargetName="Ellipse" 
                       Storyboard.TargetProperty="Height" 
                       To="{s:Static Member=visuals:ManipulationMargins.AnnotationResizingMaxSize}" /> 
                  </Storyboard> 
                 </VisualState> 
                 <VisualState x:Name="Pressed"> 
                  <Storyboard> 
                   <DoubleAnimation Duration="0" 
                       Storyboard.TargetName="Ellipse" 
                       Storyboard.TargetProperty="Width" 
                       To="{s:Static Member=visuals:ManipulationMargins.AnnotationResizingMaxSize}" /> 
                   <DoubleAnimation Duration="0" 
                       Storyboard.TargetName="Ellipse" 
                       Storyboard.TargetProperty="Height" 
                       To="{s:Static Member=visuals:ManipulationMargins.AnnotationResizingMaxSize}" /> 
                  </Storyboard> 
                 </VisualState> 
                </VisualStateGroup> 
               </VisualStateManager.VisualStateGroups> 
               <Ellipse x:Name="Ellipse" 
                 Width="{s:Static Member=visuals:ManipulationMargins.AnnotationResizingThumbSize}" 
                 Height="{s:Static Member=visuals:ManipulationMargins.AnnotationResizingThumbSize}" 
                 Fill="{TemplateBinding Background}" 
                 Stroke="{TemplateBinding BorderBrush}" 
                 StrokeThickness="{TemplateBinding BorderThickness}" 
                 Effect="{Binding Source={x:Static me:EffectManager.Instance}, Path=EnableDropShadows, Converter={StaticResource EffectConverter}, ConverterParameter={StaticResource EllipseShadowEffect}}">                  
               </Ellipse> 
              </Grid> 
             </ControlTemplate> 
            </Setter.Value> 
           </Setter> 
          </Style> 
         </Canvas.Resources> 
        </Canvas> 

       </Grid> 

       <axes:AxisArea Name="PART_CenterXAxisArea" 
           ItemsPanel="{TemplateBinding CenterXAxesPanelTemplate}" 
           ap:Device.SnapsToDevicePixels="True" /> 

      </themes:PolarPanel> 

      <!-- Chart area border only --> 
      <Border Grid.Row="3" 
        Grid.Column="2" 
        HorizontalAlignment="Stretch" 
        VerticalAlignment="Stretch" 
        BorderBrush="{Binding ElementName=PART_GridLinesArea, Path=BorderBrush}" 
        BorderThickness="{Binding ElementName=PART_GridLinesArea, Path=BorderThickness}" 
        ap:Device.SnapsToDevicePixels="True" /> 

      <!-- Axis areas --> 
      <axes:AxisArea x:Name="PART_TopAxisArea" 
          Grid.Row="2" 
          Grid.Column="2" 
          ItemsPanel="{TemplateBinding TopAxesPanelTemplate}" 
          Style="{StaticResource AxisAreaStyle}" 
          ap:Device.SnapsToDevicePixels="True" /> 
      <axes:AxisArea x:Name="PART_LeftAxisArea" 
          Grid.Row="3" 
          Grid.Column="1" 
          ItemsPanel="{TemplateBinding LeftAxesPanelTemplate}" 
          Style="{StaticResource AxisAreaStyle}" 
          ap:Device.SnapsToDevicePixels="True" /> 
      <axes:AxisArea x:Name="PART_BottomAxisArea" 
          Grid.Row="4" 
          Grid.Column="2" 
          ItemsPanel="{TemplateBinding BottomAxesPanelTemplate}" 
          Style="{StaticResource AxisAreaStyle}" 
          ap:Device.SnapsToDevicePixels="True" /> 
      <axes:AxisArea x:Name="PART_RightAxisArea" 
          Grid.Row="3" 
          Grid.Column="3" 
          ItemsPanel="{TemplateBinding RightAxesPanelTemplate}" 
          Style="{StaticResource AxisAreaStyle}" 
          ap:Device.SnapsToDevicePixels="True" /> 
     </visuals:MainGrid> 
    </Border> 
</ControlTemplate> 

Кроме того, я хотел бы предложить минимизировать размер всплывающей подсказки (подсказка охватывающей всю диаграмму на самом деле не использовать!) Или, связываясь с SeriesInfo выхода TooltipModifier, RolloverModifier разместить данные где-нибудь еще

+0

Благодарим за ответ. Поверьте мне подсказку, которая больше, чем диаграмма с высотой 200 пикселей высока, можно использовать :) Я попробую предложенное решение. –

+0

Поскольку все модификаторы выводят ViewModels для всплывающих подсказок, например. Свойство CursorModifier.SeriesData предоставляет SeriesInfo - просмотр моделей для всплывающей подсказки - вы можете привязать свою собственную всплывающую подсказку, используя слой WPF Tooltip, который всегда будет отображаться сверху. Взгляните на http://www.scichart.com/documentation/v4.x/webframe.html#SciChart.Charting~SciChart.Charting.ChartModifiers.InspectSeriesModifierBase~SeriesData.html и http://www.scichart.com/ документация/v4.x/webframe.html # SeriesInfo% 20-% 20the% 20ViewModels% 20for% 20Tooltips% 20 и% 20Legends.html для получения дополнительной информации –

+0

Спасибо, я попробую –