如何将相同的DataSource绑定到两个相同的ListView?

时间:2017-03-12 07:11:10

标签: c# wpf

我在两个不同的WPF表单中有相同的ListView。第一个表单打开第二个表单。当我将同一DataSet和DataTable作为DataSource分配给两个ListView时,只有当DataTable中的数据发生更改时,第一个更新。如果我将DataSource赋值删除到第一个Form ListView,则第二个Form ListView会更新。

作业代码是,

WatchListListView.ItemsSource = MyProjectDataManager.myStockDataSet.Tables["InternalWatchListTable"].AsDataView();

MyProjectDataManager是一个持久的C#类,它包含并维护我的内部DataTable。

如何让两个ListViews都更新?

2 个答案:

答案 0 :(得分:1)

这不是真实的"回答,但我还有更多话要说,而不是评论。

首先,程序问题。您不是绑定到DataTable,而是绑定到该表的DataView。这不是一件坏事,因为你应该能够创建一个表的多个DataView并使它们保持同步。这就是他们的目标。

其次,要真正提供帮助,我们需要的不仅仅是您提供的代码。如果我们可以比较第一个ListView上的绑定来确认它们实际上是同一个表,那么它会有所帮助。如果我们能够在MyProjectDataManager中看到实际代码(至少是相关位),也不会受到伤害。

您可以尝试进一步调试的事项:

  1. 创建单个DataView对象,并将两个ListView数据源绑定到同一个DataView。这应该可以正常工作,因为DataViews设计用于处理多个绑定方案。可能是您的DataTable没有通知次要视图所做的更改,即使它确实应该这样做。
  2. 仅为该一个表在持久数据对象上创建属性访问器。我无法帮助您认为您的字符串访问器可能会被破坏。但这并不是真的可能,而且我只是表达了我在访问表格对象时不喜欢字符串的情况。

答案 1 :(得分:0)

请提供代码以便更好地了解以下步骤可能有效,但您可能不喜欢。   1-以第二种形式定义公共函数并将ListView绑定在其中。   2-从第1个表单编辑后调用第2个表单公共函数,其中ListView将重新绑定 -