2012-10-17 40 views
0

我在我的應用程序中有列系列的圖表。我使用的解決方案本教程的上欄的頂部添加註釋:WPF ColumnDataPoint註解部分可見

http://blogs.msdn.com/b/delay/archive/2009/07/27/simple-column-labels-you-can-create-at-home-re-templating-the-silverlight-wpf-data-visualization-columndatapoint-to-add-annotations.aspx

當酒吧是那座註釋的頂部只是部分可見或不可見。

enter image description here

我不知道我的數據的範圍,所以我不能在垂直軸上設置的最大值。

如何解決這個問題?

+0

現在我不知道如何解決,但問題是負餘量。也許你可以在ControlTemplate中使用Grid以外的其他容器。 – Andre

回答

1

像安德烈說,問題是你的保證金,因此您可以使用Multibinding來計算保證金,像這樣:

<ControlTemplate TargetType="charting:ColumnDataPoint"> 
     <Grid> 
      <Rectangle Name="clmnRectangle" 
        Fill="{TemplateBinding Background}" 
        Stroke="Black"/> 
      <Grid Background="#aaffffff" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Top"> 
       <Grid.Margin> 
        <MultiBinding Converter="{StaticResource ResourceKey=HeightToMargin}"> 
         <Binding Path="ActualHeight" RelativeSource="{RelativeSource AncestorType={x:Type charting:ColumnDataPoint}}"></Binding> 
         <Binding Path="ActualHeight" RelativeSource="{RelativeSource AncestorType={x:Type charting:ColumnSeries}}"></Binding> 
        </MultiBinding> 
       </Grid.Margin> 
       <TextBlock Name="tbValue" 
            Text="{TemplateBinding FormattedDependentValue}" 
            FontWeight="Bold" 
            Margin="2"/> 
     </Grid> 
    </Grid> 
</ControlTemplate> 

轉換可能看起來像:

public class HeightToMarginConverter:IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo ci) 
    { 
     double clmnHeight = System.Convert.ToDouble(values[0]); 
     double chrtHeight = System.Convert.ToDouble(values[1]); 
     if (chrtHeight - clmnHeight < 20) 
     { 
      return new Thickness(0, clmnHeight - chrtHeight + 5, 0, 0); 
     } 
     else 
     { 
      return new Thickness(0, -20, 0, 0); 
     } 
    } 

    public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo ci) 
    { 
     return null; 
    } 
} 
+0

是的,我知道這是保證金問題。但是我想顯示註釋outsite欄,即使酒吧高。 –