MVVM模式中的动态数据显示WPF绑定



因此,我想在具有MVVM模式的wpf应用程序中将LineGraph的数据源绑定到CompositeDataSource。以下是我迄今为止所做的:

XAML中的相关行:

<d3:LineGraph DataSource="{Binding signal}" Stroke="Blue"/>

信号是我的CompositeDataSource对象。

我的ViewModel的相关部分:

private void LoadSignalExecuted()
    {
        OnLoadSignal();
        plotter.CreateGraph(dataFile);
        signal = plotter.ECGData;
        OnPropertyChanged("signal");
    }

在这种情况下,OnLoadSignal()不起任何重要作用绘图仪是我的"模型"名称空间中的一个类。CreateGraph(dataFile)只填充

public List<Points> Values { get; private set; }

对象。我检查了一下,它是正确填充的。我的积分等级如下:

class Points
{
    public Double X { get; set; }
    public Double Y { get; set; }
    public Points(Double xData, Double yData)
    {
        X = xData;
        Y = yData;
    }
} 

绘图仪.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("信号")上,这是正确实现的,我对此持肯定态度。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')

有人能指出这里的错误吗?谢谢

ECGViewModel是否在其他项目中?你试过全面重建吗?也许你有一个旧版本的ECGViewModel,它实际上没有信号属性。

相关内容

  • 没有找到相关文章

最新更新