繁体   English   中英

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

[英]Dynamic Data Display WPF Binding in MVVM pattern

因此,我想将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()并不重要。 绘图仪是我的模型名称空间中的类。 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;
    }

} 

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 Output Box说:

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 ,实际上它上面没有signal属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM