WPF+DiffPlex实现文本比对工具
作者:黑夜中的潜行者 时间:2022-04-20 21:32:07
背景
现行的文本编辑器大多都具备文本查询的能力,但是并不能直观的告诉用户两段文字的细微差异,所以对比工具在某种情况下,就起到了很便捷的效率。
关于 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;
}
}
}
效果图
来源:https://blog.csdn.net/qq_43562262/article/details/127921043
标签:WPF,DiffPlex,文本,比对
0
投稿
猜你喜欢
java面试题之数组中的逆序对
2021-08-05 10:51:02
Java编写日历表的3种方式
2023-02-16 00:50:31
C#简单操作MongoDB的步骤全纪录
2023-06-25 06:52:40
Java中ArrayList和LinkedList之间的区别_动力节点Java学院整理
2023-03-30 18:16:29
SpringMVC中Model与Session的区别说明
2023-07-07 20:42:58
Spring类型转换 ConversionSerivce Convertor解析
2022-03-25 06:55:46
java反射遍历实体类属性和类型,并赋值和获取值的简单方法
2023-07-15 04:37:18
formfile文件上传使用示例
2023-06-23 03:41:58
批处理一键安装JDK/一键安装JRE和自动配置Java环境变量
2023-11-29 05:28:30
Mybatis分页插件使用方法详解
2021-10-12 06:59:30
Java 合并多个MP4视频文件
2022-08-23 12:09:19
MyBatis中PageHelper不生效的解决方案
2022-10-23 11:46:47
Android仿正点闹钟时间齿轮滑动效果
2022-09-06 09:27:46
Spark网站日志过滤分析实例讲解
2021-06-08 12:59:24
44条Java代码优化建议
2023-12-22 06:03:49
Android SurfaceView拍照录像实现方法
2022-06-18 17:07:20
C#窗体程序实现全屏及取消全屏步骤
2023-02-18 11:48:38
关于HashMap相同key累加value的问题
2022-02-13 13:32:18
Spring Boot Logback配置日志过程解析
2022-12-09 18:08:06
Java 执行CMD命令或执行BAT批处理方式
2022-10-15 03:57:38