因此,我想将 LineGraph 的数据源绑定到具有MVVM模式的wpf应用程序中的 CompositeDataSource 。这是我到目前为止所做的:
XAML中的相关行:
<d3:LineGraph DataSource="{Binding signal}" Stroke="Blue"/>
信号是我的 CompositeDataSource 对象。
我的ViewModel的相关部分:
private void LoadSignalExecuted()
{
OnLoadSignal();
plotter.CreateGraph(dataFile);
signal = plotter.ECGData;
OnPropertyChanged("signal");
}
在这种情况下,OnLoadSignal()没有任何重要作用。 plotter 是我的Model命名空间中的一个类。 CreateGraph(dataFile)除了填充
之外别无其他public List<Points> Values { get; private set; }
对象。这是正确的填充,我检查。我的Points类如下:
class Points
{
public Double X { get; set; }
public Double Y { get; set; }
public Points(Double xData, Double yData)
{
X = xData;
Y = yData;
}
}
plotter.ECGData如下所示:
public CompositeDataSource ECGData
{
get
{
var xData = new EnumerableDataSource<double>(Values.Select(v => v.X));
xData.SetXMapping(x => x);
var yData = new EnumerableDataSource<double>(Values.Select(v => v.Y));
yData.SetYMapping(y => y);
_data = xData.Join(yData);
return _data;
}
}
其中_data当然是 CompositeDataSource 。
我认为这样可行但是LineGraph没有出现在OnPropertyChanged(“signal”)上,这是正确实现的我对此持肯定态度。 VS输出框说:
System.Windows.Data Error: 40 : BindingExpression path error: 'signal' property not found on 'object' ''ECGViewModel' (HashCode=41182536)'. BindingExpression:Path=signal; DataItem='ECGViewModel' (HashCode=41182536); target element is 'LineGraph' (Name=''); target property is 'DataSource' (type 'IPointDataSource')
有人能指出这里的错误吗?谢谢!
答案 0 :(得分:1)
ECGViewModel
是否在另一个项目中?你有没有尝试完全重建?也许你有一个旧版本的ECGViewModel
,实际上没有信号属性。