我正在尝试使用图表工具包创建一个散点图系列,其中点的颜色由这些坐标处的条目数定义。基本上,我有一个带有Count(int)属性的GraphPointViewModel类,以及一个可以正常工作的画笔Color属性。
在定义散点图系列的ViewModel中,我有以下属性:
Red
这个ObservableDictionary只是将INotifyPropertyChanged方法添加到Dictionary类中,您会注意到Dictionary有另一个Dictionary。原因是基本词典的键是X轴值,而子词典的键是Y轴值。然后使用GraphPointViewModel定义系列的样式(即根据要求为点颜色)。
这个系列的填充被证明可以正常工作。问题来自与Y轴的绑定。
我的图表来自WPF图表工具包(System.Windows.Controls.DataVisualization),并在XAML中定义为:
Red
当我运行我的应用程序时,我收到错误"没有合适的轴可用于绘制相关值"即使没有添加数据。我尝试将DependentValuePath更改为Key,但这只是使用与X轴相同的Key。如何绑定这样的字典以达到我需要的效果?
更新 被要求发布ViewModel课程(虽然我不认为他们会帮助),这里是GraphPointViewModel:
Blue
这里是负责整理图表数据的ViewModel:
UPDATE Color_Table
SET Color = "TempRed"
WHERE Color = "Blue";
通过MQTT接收数据,然后使用Broker发布,因此ViewModel已直接订阅。
答案 0 :(得分:0)
我通过删除两个词典来解决这个问题。我现在有一个EventDataPointsViewModel类:
public void updateToolbar(boolean show)
{
if(getSupportActionBar() != null) {
if(show) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} else {
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
}
}
现在数据
public class EventDataPointsViewModel : Mvvm.ViewModel
{
private int _phaseAngle;
public int PhaseAngle
{
get { return _phaseAngle; }
set { SetPropertyAndNotify(ref _phaseAngle, value); }
}
private int _amplitude;
public int Amplitude
{
get { return _amplitude; }
set { SetPropertyAndNotify(ref _amplitude, value); }
}
private int _count;
public int Count
{
get { return _count; }
set { SetPropertyAndNotify(ref _count, value, new[] { "Colour" }); }
}
public Brush Colour
{
get
{
return Count >= 5 ?
Brushes.Black :
Brushes.Gray;
}
}
}
AddDataPoint方法是
public ObservableCollection<EventDataPointsViewModel> Data { get; set; }
图表的XAML是
public void AddDataPoint(int angle, int amplitude)
{
try
{
var dataPoint = Data.FirstOrDefault(d => d.PhaseAngle == angle && d.Amplitude == amplitude);
if (dataPoint != null)
{
dataPoint.Count++;
}
else
{
Data.Add(new EventDataPointsViewModel { Amplitude = amplitude, PhaseAngle = angle, Count = 1 });
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}