2013-05-07 49 views
0

我想使用WPF圖表工具包設置自定義工具提示。使用here的演示代碼。自定義工具提示的代碼看起來是這樣的(抱歉詳細):WPF中的自定義工具提示Charting ScatterSeries

<Grid> 
     <Grid.Resources> 
      <Style 
      x:Key="MyScatterDataPointStyle" 
      TargetType="chartingToolkit:ScatterDataPoint"> 
       <Setter Property="Background" Value="Green"/> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="chartingToolkit:ScatterDataPoint"> 
          <Border 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          Opacity="0" 
          x:Name="Root"> 
           <VisualStateManager.VisualStateGroups> 
            <VisualStateGroup x:Name="CommonStates"> 
             <VisualStateGroup.Transitions> 
              <VisualTransition GeneratedDuration="0:0:0.1"/> 
             </VisualStateGroup.Transitions> 
             <VisualState x:Name="Normal"/> 
             <VisualState x:Name="MouseOver"> 
              <Storyboard> 
               <DoubleAnimation 
               Storyboard.TargetName="MouseOverHighlight" 
               Storyboard.TargetProperty="Opacity" 
               To="0.6" 
               Duration="0"/> 
              </Storyboard> 
             </VisualState> 
            </VisualStateGroup> 
            <VisualStateGroup x:Name="SelectionStates"> 
             <VisualStateGroup.Transitions> 
              <VisualTransition GeneratedDuration="0:0:0.1"/> 
             </VisualStateGroup.Transitions> 
             <VisualState x:Name="Unselected"/> 
             <VisualState x:Name="Selected"> 
              <Storyboard> 
               <DoubleAnimation 
               Storyboard.TargetName="SelectionHighlight" 
               Storyboard.TargetProperty="Opacity" 
               To="0.6" 
               Duration="0"/> 
              </Storyboard> 
             </VisualState> 
            </VisualStateGroup> 
            <VisualStateGroup x:Name="RevealStates"> 
             <VisualStateGroup.Transitions> 
              <VisualTransition GeneratedDuration="0:0:0.5"/> 
             </VisualStateGroup.Transitions> 
             <VisualState x:Name="Shown"> 
              <Storyboard> 
               <DoubleAnimation 
               Storyboard.TargetName="Root" 
               Storyboard.TargetProperty="Opacity" 
               To="1" 
               Duration="0"/> 
              </Storyboard> 
             </VisualState> 
             <VisualState x:Name="Hidden"> 
              <Storyboard> 
               <DoubleAnimation 
               Storyboard.TargetName="Root" 
               Storyboard.TargetProperty="Opacity" 
               To="0" 
               Duration="0"/> 
              </Storyboard> 
             </VisualState> 
            </VisualStateGroup> 
           </VisualStateManager.VisualStateGroups> 
           <Grid 
           Background="{TemplateBinding Background}"> 
            <Rectangle> 
             <Rectangle.Fill> 
              <LinearGradientBrush> 
               <GradientStop 
               Color="#77ffffff" 
               Offset="0"/> 
               <GradientStop 
               Color="#00ffffff" 
               Offset="1"/> 
              </LinearGradientBrush> 
             </Rectangle.Fill> 
            </Rectangle> 
            <Border 
            BorderBrush="#ccffffff" 
            BorderThickness="1"> 
             <Border 
             BorderBrush="#77ffffff" 
             BorderThickness="1"/> 
            </Border> 
            <Rectangle x:Name="SelectionHighlight" Fill="Red" Opacity="0"/> 
            <Rectangle x:Name="MouseOverHighlight" Fill="White" Opacity="0"/> 
           </Grid> 
           <ToolTipService.ToolTip> 
            <StackPanel> 
             <ContentControl 
             Content="Custom ToolTip" 
             FontWeight="Bold"/> 
             <ContentControl 
             Content="{TemplateBinding FormattedDependentValue}"/> 
            </StackPanel> 
           </ToolTipService.ToolTip> 
          </Border> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </Grid.Resources> 

「數據」我結合是一個詞典,因此DependentValuePath =「Value.X」和IndependentValuePath =「Value.Y 」。

我的圖表的代碼看起來是這樣的:

 <chartingToolkit:Chart Name="MyChart"> 
      <chartingToolkit:Chart.Series> 
       <chartingToolkit:ScatterSeries 
        ItemsSource="{Binding Data}" 
        DependentValuePath="Value.X" 
        IndependentValuePath="Value.Y" 
        DataPointStyle="{StaticResource MyScatterDataPointStyle}"> 
        <chartingToolkit:ScatterSeries.IndependentAxis> 
         <chartingToolkit:LinearAxis Name="XAxis" Title="Area Under ROC Curve" Orientation="X" Minimum="0" /> 
        </chartingToolkit:ScatterSeries.IndependentAxis> 
        <chartingToolkit:ScatterSeries.DependentRangeAxis> 
         <chartingToolkit:LinearAxis Name="YAxis" Title="Calibration Error" Orientation="Y" Minimum="0" /> 
        </chartingToolkit:ScatterSeries.DependentRangeAxis> 
       </chartingToolkit:ScatterSeries> 
      </chartingToolkit:Chart.Series> 
     </chartingToolkit:Chart> 

我想工具提示是這樣的形式的String.Format的( 「{0}:{1},{2}」,鍵,值。 X,Value.Y); (即關鍵在於價值)。任何想法如何做到這一點?目前工具提示只顯示相關的值。

回答

1

我認爲這個問題有你正在尋找 WPF toolkit charting : Customize datapoint label

基本上你想要更多的條目添加到您的ToolTipService.ToolTip聲明

<ToolTipService.ToolTip> 
    <StackPanel> 
     <ContentControl 
      Content="Custom ToolTip" 
      FontWeight="Bold"/> 
     <ContentControl 
      Content="{TemplateBinding Key}"/><!--I am not sure what the correct property will be Key is a guess--> 
     <ContentControl 
      Content="{TemplateBinding IndependentValue}"/> 
     <ContentControl 
      Content="{TemplateBinding DependentValue}"/> 
    </StackPanel> 
</ToolTipService.ToolTip> 
+0

也做到了,謝謝回答!更新了密鑰綁定 – tdc 2013-05-07 19:18:21