0

我对绑定源不太熟悉。简短的问题是:如何将图表绑定到数据源,以便在更改 BindingNavigator 时图表显示会更新?

我冗长的解释如下:

我有一个已导入 C# VS 2010 Express 的数据源。它是一个相关数据集,其中有 2 个表(资产、历史价格),其中每个资产都有一个相关历史价格表。

在 BindingNavigator 的帮助下,我只需将数据源拖放到表单中,就可以创建我想要的视图。我也将 Historical_prices 表的 DataGrid 视图拖到表单中,并在单击 BindingNavigator 时更新

然后我在表单中创建了一个图表,我选择了 DataSource 作为history_pricesBindingSource。它加载

我希望能够在 BindingBavigator 更改但当前没有更改时使用不同的 Historical_prices 更新图表。有任何想法吗?

我尝试添加chart1.Update();BindingNavigatorSaveItem_Click 事件,但没有骰子。

非常感谢你

4

1 回答 1

0

绑定实际上需要是数据绑定的,而不仅仅是分配的。您所做的实际上是创建了一个一次性绑定,该绑定在运行时在初始化或赋值期间发生。

这意味着当源(数据源)由视图创建时,您的目标(图表)仅更新一次。

您正在寻找的是双向绑定。以便在源被修改时随时更新目标。

要实现这一点,您通常需要使用双向绑定语法将 DataSource 绑定到 TargetProperty。

<Toolkit:Chart x:Name="myChart" DataSource="{Binding historical_PricesDataSource, Mode=TwoWay}" />

您的数据源将需要实现 INotifyPropertyChanged 接口,以便通知 UI 它需要更新。

实现 INotifyPropertyChanged 的​​代码是:

公共事件 PropertyChangedEventHandler PropertyChanged = delegate{};

    // This method is called by the Set accessor of each property. 
    // The CallerMemberName attribute that is applied to the optional propertyName 
    // parameter causes the property name of the caller to be substituted as an argument. 
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

有关 INotifyPropertyChanged 的​​更多信息:http: //msdn.microsoft.com/en-us/library/ms229614.aspx

于 2012-11-21T15:23:38.090 回答