Я использую серию RadCartesian Bar и хотел узнать, знает ли кто-нибудь, как отрегулировать вертикальную высоту точек / прямоугольников данных? (Я не могу прикрепить изображения, так как StackOverflow говорит, что у меня недостаточно очков)
Но будет гиперссылка образец решения, предоставленного Мартином в Telerik.
<UserControl x:Class="WpfApp6.ScatterBarVisual"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfApp6"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Canvas Width="2" Height="2">
<Rectangle Height="20" Fill="Blue" x:Name="visual" />
</Canvas>
private void ChartPlotAreaClipChanged(object sender, EventArgs e)
{
this.UpdateVisualHeight();
}
private void UpdateVisualHeight()
{
if (this.Chart != null)
{
DataPoint dp = (DataPoint)this.DataContext;
double highPosition = dp.LayoutSlot.X;
double lowPosition = this.Chart.ConvertDataToPoint(new DataTuple(this.LowValue, null)).X;
var length = highPosition - lowPosition;
this.visual.Width = length;
}
}
public ScatterBarVisual()
{
InitializeComponent();
}
Код моего окна:
namespace WpfApp6
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var source = new ObservableCollection<PlotInfo>();
Random r = new Random();
for (int i = 0; i < 10; i++)
{
double high = r.Next(100, 300);
double low = high - r.Next(10, 150);
source.Add(new PlotInfo() { Y = i, High = high, Low = low });
}
this.DataContext = source;
}
}
public class PlotInfo
{
public double High { get; set; }
public double Low { get; set; }
public double Y { get; set; }
}
}