【问题标题】:Dynamic Data Display WPF Binding in MVVM patternMVVM 模式中的动态数据显示 WPF 绑定
【发布时间】:2013-08-01 11:05:39
【问题描述】:

所以,我想将 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 是我的模型命名空间中的一个类。 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 输出框说:

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')

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

【问题讨论】:

  • “信号”属性是什么样的?
  • 你看过VS输出框了吗?
  • @ChrisMantle "signal" 是一个 CompositeDataSource。它从不使用,除非它被分配了一个值,在这种情况下 plotter.ECGData 也是 CompositeDataSource。我需要这个不要破坏 mvvm 模式。顺便说一句,我遵循了一个教程,在 cmets 中他们说这对他们有用,这就是我感到困惑的原因。
  • @HichemCSharp 我已将信息添加到问题中。
  • signal 属性肯定存在于ECGViewModel 上?它绝对是一个属性,而不仅仅是一个变量?它有一个 getter 和一个 setter?

标签: c# wpf mvvm binding dynamic-data-display


【解决方案1】:

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

【讨论】:

  • 同一个项目,但不同的 obj 文件夹。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-20
  • 2015-05-24
  • 1970-01-01
  • 2013-02-26
  • 2011-02-01
  • 2014-08-09
  • 1970-01-01
相关资源
最近更新 更多