WPF+DiffPlex实现文本比对工具
更新时间:2022年11月19日 15:29:53 作者:黑夜中的潜行者
现行的文本编辑器大多都具备文本查询的能力,但是并不能直观的告诉用户两段文字的细微差异,所以对比工具在某种情况下,就起到了很便捷的效率。本文将利用DiffPlex实现简易的文本比对工具,需要的可以参考一下
背景
现行的文本编辑器大多都具备文本查询的能力,但是并不能直观的告诉用户两段文字的细微差异,所以对比工具在某种情况下,就起到了很便捷的效率。
关于 DiffPlex
DiffPlex 是用于生成文本差异的 C# 库
准备
NuGet 包
DiffPlex.Wpf 主要包
MaterialDesignThemes 主题包
代码实现
MainWindow.xaml
<Window x:Class="TextComparisonTool.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:diffplex="clr-namespace:DiffPlex.Wpf.Controls;assembly=DiffPlex.Wpf" xmlns:local="clr-namespace:TextComparisonTool" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="文本比对工具" Width="800" Height="450" Icon="DiffPlex.ico" WindowState="Maximized" mc:Ignorable="d"> <Grid Margin="5"> <Grid.RowDefinitions> <RowDefinition Height="40" /> <RowDefinition /> </Grid.RowDefinitions> <WrapPanel> <Button x:Name="BtnInput" Click="BtnInput_Click" Content="输入文本" Style="{DynamicResource MaterialDesignFlatAccentBgButton}" /> </WrapPanel> <diffplex:DiffViewer x:Name="DiffView" Grid.Row="1" /> </Grid> </Window>
MainWindow.xaml.cs
using System.Windows; namespace TextComparisonTool { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void BtnInput_Click(object sender, RoutedEventArgs e) { InputOldeTextAndNewText input = new(); input.ShowDialog(); if (input.DialogResult is true) { DiffView.OldText = input.txtOldText.Text; DiffView.NewText = input.txtNewText.Text; } } } }
InputOldeTextAndNewText.xaml
<Window x:Class="TextComparisonTool.InputOldeTextAndNewText" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="输入新旧文本" Width="850" Height="500" Icon="DiffPlex.ico" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" mc:Ignorable="d"> <Border Margin="5" CornerRadius="11"> <StackPanel> <TextBlock Style="{DynamicResource MaterialDesignBody1TextBlock}" Text="源文本" /> <TextBox x:Name="txtOldText" AcceptsReturn="True" MaxLines="10" MinLines="10" TextWrapping="Wrap" /> <TextBlock VerticalAlignment="Center" Style="{DynamicResource MaterialDesignBody1TextBlock}" Text="新文本" /> <TextBox x:Name="txtNewText" AcceptsReturn="True" MaxLines="10" MinLines="10" TextWrapping="Wrap" /> <Button x:Name="BtnText" Margin="10" Click="BtnText_Click" Content="确认" Style="{DynamicResource MaterialDesignFlatButton}" /> </StackPanel> </Border> </Window>
InputOldeTextAndNewText.xaml.cs
using System.Windows; namespace TextComparisonTool { /// <summary> /// InputOldeTextAndNewText.xaml 的交互逻辑 /// </summary> public partial class InputOldeTextAndNewText : Window { public InputOldeTextAndNewText() { InitializeComponent(); } private void BtnText_Click(object sender, RoutedEventArgs e) { DialogResult = true; } } }
效果图
到此这篇关于WPF+DiffPlex实现文本比对工具的文章就介绍到这了,更多相关WPF DiffPlex文本比对工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
C# 中使用Stopwatch计时器实现暂停计时继续计时功能
这篇文章主要介绍了C# 中使用Stopwatch计时器可暂停计时继续计时,主要介绍stopwatch的实例代码详解,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-03-03Unity 使用TexturePacker打包图集的操作方法
这篇文章主要介绍了Unity 使用TexturePacker打包图集的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-08-08
最新评论