2012-01-07 64 views
0

我有一個具有挑戰性的問題。我的要求是像我有它有像.NET中差異查看器控件

Name 0,20 
age 21,4 

這就好比字段名稱值將出現在以下位置值的XML文件。我在我的xml文件中有100個這樣的記錄。我想動態讀取這是佈局的XML文件。並比較兩個不同公司生成的兩個輸出文件。 Output1和Output2 ...其中位置的位置和年齡的Name的值將在那裏。我想要讀取這些值並手動向用戶顯示這些區域中兩個文件存在差異。

在.NET,C#窗口,wpf應用程序中是否有任何動態查看器控件可用於在兩個文件中顯示這些差異?

+0

這看起來不像XML,或者我不明白你在問什麼。 – kenny 2012-01-07 22:11:28

+1

@Tigran - >我也看到了,但不知道該怎麼說。謝謝。 – 2012-01-07 22:40:44

回答

1

一個浮現在我的腦海裏幾個可能的解決方案是:

  1. 使用XPathNavigator解析那些3,在實踐中,文件和比較它們的內容。
  2. 對於可視化使用WPF RichTextBox,是否可以加載完整的格式化文本和格式/顏色部分,您可以使用它突出顯示找到的差異。

WPF RichTextBox Sample1 WPF RichTextBox Sample2

你需要考慮的是,WPF TextBox是,基本上,易於使用,但也沉迷於消耗大量的內存,所以請關注您的應用程序的內存消耗。

你自然可以使用其他編輯器,例如Scintilla,但我認爲這種情況下的故事變得更加複雜。

編輯: 可能有另一個編程溶液,只是使用WinMerge和運行程序(這是免費)用所需的參數。所以它會關心顯示/突出顯示兩個不同文件之間的差異。

選擇取決於你。

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>(); 

而且這個集合將被綁定到ItemsSource屬性DataGrid的。

使用此方法,您不需要創建新控件或使用第三方控件。如果您想創建列標題,可以使用DataGridColumns和模板來結束。

2

這不是一個控件,而是一個用c#編寫的完整文件差異工具。源代碼也可用(CharityWare)。

http://www.menees.com/

你可以看到源代碼,看看文件的區別是如何實現的。