Silverlight 图表尝试将值绑定到集合而不是元素

本文关键字:集合 元素 绑定 Silverlight | 更新日期: 2023-09-27 17:56:43

我的视图模型上有一个属性,它返回一些硬编码的测试数据:

public ObservableCollection<Item> Items
{
  get
  {
    return new ObservableCollection<Item> {
      new Item { Key = 0, Count = 5 },
      new Item { Key = 1, Count = 3 },
      new Item { Key = 2, Count = 2 },
      new Item { Key = 3, Count = 7 }
    }
  }
}

我的图表在视图中定义为:

<toolkit:WrapPanel>
  <toolkit:Chart>
    <toolkit:LineSeries ItemsSource="{Binding Items}" IndependentAxis="{Binding Key}" DependentValueBinding="{Binding Count}"/>
  </toolkit:Chart>
</toolkit:WrapPanel>

使用该代码,我得到以下异常:

System.Windows.Data Error: BindingExpression path error: 'Key' property not found on 'Test.MyViewModel' 'Test.MyViewModel' (HashCode=50157845). BindingExpression: Path='Key' DataItem='Test.MyViewModel' (HashCode=50157845); target element is 'System.Windows.Controls.DataVisualization.Charting.LineSeries' (Name=''); target property is 'IndependentAxis' (type 'System.Windows.Controls.DataVisualization.Charting.IAxis').

如果我将图表的DataContext绑定到 Items ,则不会引发异常,但图表不显示任何数据。

编辑:不,它抱怨无法绑定集合上的密钥和计数。

我见过的所有示例的图表都是这样设置的,那么为什么我的图表会尝试绑定到视图模型呢?或者更确切地说,为什么这似乎对其他人有用?

Silverlight 图表尝试将值绑定到集合而不是元素

您可能需要使用 IndependentValueBinding="{Binding Key}" .

IndependentAxis指定要使用的轴类型 - 分类、日期/时间等,而不是从何处获取轴的数据:

<charting:LineSeries.IndependentAxis>
   <charting:CategoryAxis Orientation="X"/>
</charting:LineSeries.IndependentAxis>