Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将同一数据源绑定到两个相同的ListView?_C#_Wpf - Fatal编程技术网

C# 如何将同一数据源绑定到两个相同的ListView?

C# 如何将同一数据源绑定到两个相同的ListView?,c#,wpf,C#,Wpf,我有两种不同WPF形式的相同列表视图。第一个表单打开第二个表单。当我将相同的DataSet和DataTable作为数据源分配给两个ListView时,只有第一个会在DataTable中的数据发生更改时更新。如果删除对第一个表单ListView的数据源分配,则第二个表单ListView将更新 任务代码是 WatchListListView.ItemsSource = MyProjectDataManager.myStockDataSet.Tables["InternalWatchListTable

我有两种不同WPF形式的相同列表视图。第一个表单打开第二个表单。当我将相同的DataSet和DataTable作为数据源分配给两个ListView时,只有第一个会在DataTable中的数据发生更改时更新。如果删除对第一个表单ListView的数据源分配,则第二个表单ListView将更新

任务代码是

WatchListListView.ItemsSource = MyProjectDataManager.myStockDataSet.Tables["InternalWatchListTable"].AsDataView();
MyProjectDataManager是一个持久的C#类,它包含并维护我的内部数据表

如何更新这两个列表视图?

这不是一个“真实”的答案,但我有更多的话要说,不能放在评论中

首先是规程问题。您没有绑定到DataTable,而是绑定到该表的。这不是一件坏事,因为您应该能够创建一个表的多个数据视图并使它们保持同步。这就是他们的目的

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

您可以尝试进一步调试的内容:

  • 创建单个DataView对象并将两个ListView数据源绑定到同一DataView。这应该可以很好地工作,因为DataView设计用于处理多个绑定场景。可能是DataTable没有通知次视图所做的更改,即使它确实应该这样做
  • 仅为该表在持久数据对象上创建属性访问器。我忍不住想,你的字符串访问器可能被吓坏了。不过,这不太可能,我只是表达了我在访问表对象时对字符串的潜在厌恶

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

    感谢您的帮助。“您没有绑定到DataTable,而是绑定到DataView”是我缺少的部分。通过创建两个DataView,每个ListView一个,当我修改one DataTable中的数据时,两个ListView都会更新。WatchListDataView=myStockDataSet.Tables[“InternalWatchListTable”].DefaultView;WatchListDataViewOne=myStockDataSet.Tables[“InternalWatchListTable”].DefaultView;然后以两种形式WatchListView.ItemsSource=MyProjectDataManager.WatchListDataView;WatchListView.ItemsSource=MyProjectDataManager.WatchListDataViewOne;为什么两个ListView都有一个DataView,只有第一个更新了,而第二个没有更新,这对我来说仍然是个谜。如果关闭然后重新打开第二个表单,ListView将更新。但是,代码现在以我希望的方式工作,有两个数据视图。再次感谢你。我很高兴你走上了正确的道路,你的工作顺利。