.NET中的差异查看器控件

时间:2012-01-07 21:35:51

标签: c# .net wpf silverlight

我有一个具有挑战性的问题。我的要求就像我有一个xml文件,其值为

Name 0,20 
age 21,4 

这就像字段名称值将在以下位置。我的xml文件中有100条这样的记录。我想动态读取这个布局的xml文件。并比较两个不同公司生成的两个输出文件。 Output1和Output2 ...其中位置处的Name和位置处的年龄的值将在那里。我想读取值并手动向用户显示这些区域的两个文件存在差异。

.net,C#windows,wpf app中是否有可用的动态查看器控件在两个文件中显示这些差异?

3 个答案:

答案 0 :(得分:2)

这不是一个控件,而是一个用c#编写的完整文件差异工具。源代码也可用(CharityWare)。

http://www.menees.com/

您可以看到源代码,以了解文件差异的实现方式。

答案 1 :(得分:1)

如果你设计一个像......

这样的类,WPF中现有的DataGrid类可以很好地满足这个需求
public class Difference
{
    public string PropertyName { get; set; }
    public string File1Value { get; set; }
    public string File2Value { get; set; }
}

这个课程会有所不同。每次找到希望用户看到的差异时,您都会创建此类的实例,并将每个实例添加到集合中...

public ObservableCollection<Difference> Differences = new ObservableCollection<Difference>();

此集合将绑定到DataGrid的ItemsSource属性。

使用此方法,您无需创建新控件或使用第三方控件。如果您想要打开列标题,可以使用DataGridColumns和模板。

答案 2 :(得分:1)

我想到的几种可能的解决方案之一是:

  1. 使用XPathNavigator解析实际上的3个文件并比较它们的内容。
  2. 对于可视化使用WPF RichTextBox,您是否可以加载完整的格式化文本和格式/颜色部分,您可以使用它来突出显示的差异。
  3. WPF RichTextBox Sample1 WPF RichTextBox Sample2

    您需要考虑WPF TextBox基本上易于使用,但也会沉迷于消耗大量内存,因此请密切关注应用的内存消耗。

    您自然可以使用其他编辑器,例如Scintilla,但我认为此案例中的故事变得更加复杂。

    修改 可能有另一个编程解决方案,只是使用WinMerge并使用所需参数运行该程序(免费)。所以它会关心显示/突出显示两个不同文件之间的差异。

    选择取决于你。