0
我在我的應用程序中有列系列的圖表。我使用的解決方案本教程的上欄的頂部添加註釋:WPF ColumnDataPoint註解部分可見
當酒吧是那座註釋的頂部只是部分可見或不可見。
我不知道我的數據的範圍,所以我不能在垂直軸上設置的最大值。
如何解決這個問題?
我在我的應用程序中有列系列的圖表。我使用的解決方案本教程的上欄的頂部添加註釋:WPF ColumnDataPoint註解部分可見
當酒吧是那座註釋的頂部只是部分可見或不可見。
我不知道我的數據的範圍,所以我不能在垂直軸上設置的最大值。
如何解決這個問題?
像安德烈說,問題是你的保證金,因此您可以使用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;
}
}
是的,我知道這是保證金問題。但是我想顯示註釋outsite欄,即使酒吧高。 –
現在我不知道如何解決,但問題是負餘量。也許你可以在ControlTemplate中使用Grid以外的其他容器。 – Andre