C# 如何保持DataGrid控件完全同步?

C# 如何保持DataGrid控件完全同步?,c#,wpf,user-interface,datagrid,wpf-controls,C#,Wpf,User Interface,Datagrid,Wpf Controls,对于这个问题,如果您下载以下两个图像,将会很有帮助: 主选项卡项中的DataGrid: 辅助选项卡项中非常类似的DataGrid: 请注意,除了两个额外的字段(“Gamma”和“Beta”),这两个数据网格是相同的 我希望尽可能使这两个选项卡保持同步。应用程序读取一组XML文件,并将某些字段放置在数据网格中,每行一个XML文件。它当前仅显示主选项卡,即第二个选项卡。选项卡为空。我应该如何处理第二个问题。账单?我应该做一些类似于: content4grid2 = content4grid1;

对于这个问题,如果您下载以下两个图像,将会很有帮助:

主选项卡项中的DataGrid:

辅助选项卡项中非常类似的DataGrid:

请注意,除了两个额外的字段(“Gamma”和“Beta”),这两个数据网格是相同的

我希望尽可能使这两个选项卡保持同步。应用程序读取一组XML文件,并将某些字段放置在数据网格中,每行一个XML文件。它当前仅显示主选项卡,即第二个选项卡。选项卡为空。我应该如何处理第二个问题。账单?我应该做一些类似于:

content4grid2 = content4grid1;
// XML files have been read and placed in the latter List<model>
那么TabControl/TabItem侦听器/处理程序呢?如果我按照上面的方式做,我就不需要每次用户单击选项卡时都捕捉到单击,对吗

总的来说,我想征求大家对这类应用的意见,因为这是我第一次使用


顺便说一句:这两个数据网格实际上在用户控件内部。

我希望这两个选项卡尽可能保持同步
-然后将这两个UI绑定到相同的数据。UI不负责维护数据的状态,只负责显示数据。忘记点击、事件处理程序和程序性的东西。UI不是数据。这是我的第一个倾向,但当我创建2个用户控件时,我复制并粘贴了第二个。从第一个单词开始(只更改一个单词)。因此,我有两套相同的代码。我想我应该只留下一个属于主窗口的
content4grid
?删除所有非UI特定的代码。WPF中的代码隐藏通常是关于动画交互性,以及特定于UI的东西(仅当这些东西很难通过XAML实现时)<代码>数据相关代码必须放在<代码>模型层中,而表示逻辑必须放在<代码>视图模型层中。顺便说一句,如果您有相同的UI,具有相同的功能,除了1个不同,则不要创建2个视图。使用单个
视图
,最终将要显示/隐藏的任何UI元素(或任何差异)的可见性属性绑定到ViewModel中的属性,然后切换该属性。是的,它会简化你的生活,让你真正快乐。看看我刚刚写的(关于一个完全不同的主题),但它说明了使用WPF与ViewModel的对比。
dataGrid1.ItemsSource = content4grid1;
dataGrid2.ItemsSource = content4grid2;