WPF---页面内遮罩层的非弹窗方案实现(透明遮罩+动画加载条)

【WPF】消息蒙版弹窗UI以及await实现等待反馈(popup) 原版的消息框太丑?不喜欢?本文展示了自定义的消息框UI与逻辑设置。如果您对原版消息框的外观不太满意,或者不符合您的应用程序的需求,那么可以通过自定义消息框来实现所需的外观和功能。 阅读详情
AI摘要

本文介绍WPF页面内遮罩层的非弹窗方案,点击Load按钮后,实现5s遮罩与加载条动画。通过控制页面元素层叠关系,用透明元素覆盖达到遮罩效果,加载条动画采用第三方HandyControl。还给出踩坑提示,如控制层叠关系、避免自定义Window弹窗的复杂操作,以及Visibility属性改变的异步处理等。

 页面效果:点击Load按钮后,5s遮罩+加载条动画

 

实现思路:通过控制页面元素的层叠关系,用透明元素覆盖的效果达到页面内遮罩效果。

加载条动画采用第三方HandyControl里的加载条。

代码:

Xaml

<Window x:Class="LoadingTest.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:LoadingTest"
        xmlns:hc="https://handyorg.github.io/handycontrol"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="50"/>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0" x:Name="layer1" HorizontalAlignment="Center" VerticalAlignment="Center">
            <TextBlock Width="300" Height="100" FontSize="50" Text="Layer1" TextAlignment="Center" />
        </Grid>
        <Grid Grid.Row="0" x:Name="layer2" Opacity="0.5" Background="Gray" Visibility="Collapsed">
            <hc:LoadingCircle Width="100" Height="100" Foreground="White"/>
        </Grid>
        <Button Grid.Row="1" Content="Load" Click="Button_ClickAsync"/>
    </Grid>
</Window>

C#

  private async void Button_ClickAsync(object sender, RoutedEventArgs e)
  {
      //Panel.SetZIndex(layer1, 0);
      //Panel.SetZIndex(layer2, 1);
      //await Task.Delay(5000);
      //Panel.SetZIndex(layer1, 1);
      //Panel.SetZIndex(layer2, 0);

      layer2.Visibility = Visibility.Visible;
      await Task.Delay(5000);
      layer2.Visibility = Visibility.Collapsed;
  }

踩坑提示:

        1. 通过Panel.ZIndex来控制层叠关系感觉理论上是可行的,但是不生效,可能有些节窍,我还没搞明白。还是控制Visibility属性实测好用,而且可以把Visibility直接通过MVVM绑定ViewModel的属性,做到改变及时响应。

 private Visibility isLoading;
 /// <summary>
 /// 加载条
 /// </summary>
 public Visibility IsLoading
 {
     get => isLoading;
     set => SetProperty(ref isLoading, value);
 }
<Grid x:Name="LoadingGrid" Background="Gray" Opacity="0.5"  Visibility="{Binding IsLoading}">
     <hc:LoadingCircle Width="80" Height="80"  Style="{StaticResource LoadingCircleLargeLight}"/>
</Grid>

        2. 通过自定义Window弹窗的方法,需要设置Window无边框,窗口的大小和定位也需要计算,还需要传递父页面元素内容,比较复杂。自定义Window弹窗方案不如页面内控制空间位置来的简单,还可以跟随主窗口大小随时变化,效果好。

        3.注意!!!Visibility属性改变过程在同一方法内时,等待过程一定要异步await,否则页面布局属性的改变不会即时的响应在页面上。UpdateLayout();调用也不好使!!!实在不行就把Visibility变化之间的代码用Task.Run给包起来。

IsLoading = Visibility.Visible;

await Task.Run(() =>
{
    //执行
});

IsLoading = Visibility.Collapsed;

WPF 实现带遮罩的消息提示框 在本文中,我将介绍如何使用 WPF 创建一个带有蒙版效果的消息提示框,以提供更好的用户体验。用户在使用应用程序时,可以通过该提示框获得重要的信息或警告,同时蒙版效果可以防止用户在提示框显示期间操作其他界面。方法中,我们首先设置提示信息的文本,然后将蒙版的可见性设置为 “Visible”,并开始淡入动画。方法中,我们开始淡出动画,并将蒙版的可见性设置为 “Collapsed”,以隐藏提示框。接下来,我们可以在代码-behind 文件中,根据需要动态地显示和隐藏消息提示框。方法,用于显示和隐藏消息提示框。 阅读详情

相关推荐

WPF弹出半透明遮罩

WPF弹出半透明遮罩,比较简单,适合初学者

WPF遮罩层实现

废话不多说,直接上图: 上代码:先搞一个基类,方便子窗体复用 public partial class BaseWindow : Window { public BaseWindow() : base() { this.Closed += Window_Closed; this.WindowStartup

David 1万+

WPF弹出遮罩动画效果控件

最近正在学习WPF动画,于是自己做了一个弹出遮罩动画效果自定义控件,仅供参考学习。 1.控件淡出效果 2.控件弹出效果(控件由小到大)

Wpf遮罩层

首先看一下效果图 我们要把这个弹窗的页面大小改为整个屏幕的尺寸(例如我的屏幕分辨率大小是1920*1080) 这里页面背景的颜色 改成你想要的遮罩层颜色 #号后面的AA是透明度 可以在属性窗口里更改 然后把 AllowsTransparency这个属性改为True WindowState属性为Maximized WindowStyle为None WindowStartupLocation为CenterScreen 最后设置你想要显示的页面背景色改成白色,大小改成你想要的大小就可以了。 ...

weixin_44540343的博客 3421

LoadingMask(WPF加载数据loading遮罩)

LoadingMask(WPF加载数据loading遮罩) 博客地址http://blog.youkuaiyun.com/lhx527099095/article/details/8005095

Windows 11下ROS2 Humble与PyCharm无缝集成实战(避坑指南+完整配置流程)

本文详细介绍了在Windows 11系统下如何实现ROS2 Humble与PyCharm的无缝集成,包括环境准备、ROS2 Humble安装、PyCharm配置以及C++与Qt5混合开发的实战技巧。通过避坑指南和完整配置流程,帮助开发者高效搭建稳定的机器人开发环境,特别适合Windows平台的ROS2开发者。

weixin_28710999的博客 367

HandyControl交互设计避坑指南:对话框异步回调与遮罩点击的5个实用技巧

本文针对WPF开发者使用HandyControl时常见的交互难题,提供了5个实用技巧。重点解析了对话框异步回调机制,通过实现IDialogResultable<T>接口和GetResultAsync方法,解决了数据回传问题。同时,详细介绍了如何安全地实现点击遮罩关闭对话框、封装可复用的加载框与列表选择组件,并强调了线程安全与异常处理的重要性,帮助开发者构建更流畅、专业的桌面应用交互体验。

weixin_29290947的博客 247

永磁同步电机定子槽型设计实战:从梨形槽到矩形槽的NVH优化之路

本文深入探讨了永磁同步电机定子槽型设计在NVH优化中的关键作用,对比了梨形槽与矩形槽的性能差异。通过Ansys Maxwell仿真和实际案例,揭示了矩形槽在提升槽满率、降低电磁噪声方面的优势,并总结了五大设计黄金法则,为电机设计工程师提供了实用指导。

weixin_28740299的博客 493

UI对象检查工具:自动化测试中精准定位与高效脚本生成的核心利器

在软件测试领域,自动化测试的核心挑战之一是对象识别与定位。其原理是通过操作系统或浏览器提供的可访问性接口,构建应用程序的UI元素树,并提取元素的唯一属性(如ID、Name、XPath等)来生成稳定的定位器。这项技术的价值在于,它从根本上解决了自动化脚本因UI变化而失效的痛点,显著提升了测试脚本的健壮性和可维护性。在工程实践中,无论是Web应用、桌面应用还是移动应用,都需要借助UI对象检查工具来高效完成元素探测、属性分析和定位策略生成。例如,在Web自动化中,浏览器开发者工具是分析DOM结构和生成CSS选择器

weixin_30915275的博客 350

银河麒麟系统安装redis【亲测可行】

架构:Linux 5.10.0-9-generic x86_64 GNU/Linux。redis版本:redis-6.2.3.tar.gz。然后在执行make install,结束;OS:银河麒麟V10(SP1)未激活。cpu:I5-10代;

lx_nhs的博客 3336

比亚迪璇玑架构:10ms级响应引领智能驾驶革命

比亚迪璇玑架构通过三大创新,实现10ms级控制响应时延,使AEB刹车距离比竞品缩短20米。

百态·数智思维 | 聚焦大数据、量化与未来AI 1256

WPF添加加载动画遮罩

项目中是一个主窗口里开tab页方式,如果是tab中界面加载时,动画是要遮住整个主窗口的,这样遮罩定义只能放在主窗口中,就需要在tab界面中将是否显示传递给主窗口。项目使用的是prism框架,在这使用Event Aggregation事件聚合实现。

IT Tech 1303

从零开始:QNX SDP 8.0开发环境搭建与实战入门

本文详细介绍了如何从零开始搭建QNX SDP 8.0开发环境并进行实战入门。内容涵盖许可证获取、环境安装、命令行与IDE工具使用、BSP构建、系统镜像生成,以及编写、编译和运行第一个QNX程序的全过程。旨在帮助嵌入式开发者,特别是汽车电子和工业控制领域的工程师,快速掌握这一实时操作系统(RTOS)的开发基础。

weixin_29163857的博客 641

WPF开源控件【Newbeecoder.UI】遮罩层

在项目中,用户设置IsEnabled为False时,控件不可用,当控件不可用可以给它增加遮罩层。用户就点不到控件。 下面来分解一下遮罩层实现原理: 定有不可用装饰类,DisabledAdorner继承Adorner装饰类。Adorner是继承FrameworkElement元素基类。 定义集合VisualCollectione用于添加Grid,定义Grid容器用于遮罩控件。 private VisualCollection _visCollec; private Grid _grid; 在构造方

软件技术的专栏 1277

【Unity引擎技术整合】 Unity学习路线 | 知识汇总 | 持续更新 | 保持乐趣 | 共同成长

本文对Unity引擎的知识进行了一个整理总结,基本包含了Unity中大部分的知识介绍。 网上也有很多Unity相关的学习资料,但大多数都不成体系,学起来的时候难免会东奔西走的摸不着头脑。 本文整理的多数文章都是有对应的系列性文章专栏,可以更方便的进行系统学习相关知识体系。

努力前行,总会成为自己心中的那道光 15万+

ROS从入门到精通0-4:VSCode 搭建 ROS 工程环境

为了提高开发效率,可以先安装集成开发工具和使用方便的工具,本教程用VSCode搭建ROS工程环境

FRIGIDWINTER的博客 1万+

【wpf】11 在WPF中实现父窗口蒙版效果:原理详解与进阶优化

实现效果:子窗口弹出时,父窗口呈现半透明遮罩;子窗口关闭后,蒙版自动消失,父窗口恢复交互。优势代码简洁,依赖纯WPF原生控件实现。支持模态与非模态窗口,扩展性强。动画和样式优化后,用户体验更佳。开发者可根据实际需求选择基础实现或进阶优化方案。本文代码已通过Visual Studio 2022测试,建议读者动手实践以加深理解。

kewaqi618的博客 1919

【数据分析八步法】将模糊需求转化为可验证的分析问题

国内访问Huggingface官方源常遇网络问题,可通过切换国内镜像提升下载速度。三种配置方式:1)设置HF_ENDPOINT环境变量;2)在from_pretrained中直接指定镜像参数;3)修改本地Huggingface配置文件。常用镜像包括hf-mirror.com、阿里云ModelScope和清华镜像源。注意镜像同步延迟、私有模型限制,建议配合huggingface-cli工具使用,必要时取消代理设置。合理配置镜像源可显著改善Huggingface生态使用体验。

Mr数据杨 858

WPF 添加半透明的遮罩层AdornerLayer,微信搜索效

在一个page页面上添加一个半透明的遮罩层,遮罩层里显示一个用户控件。 效果就是微信的winows版的搜索功能。 这里要借助AdornerLayer。 首先自定义一个用户控件。这里就不描述了。 然后定义一个类继承Adorner。 代码如下: using System; using System.Collections.Generic; using System.Linq; using S

DoitPlayer的专栏 7001

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

WPF 蒙版弹窗(背景层是一个半透明的遮罩蒙版)

蒙版弹窗是背景层是一个半透明的遮罩蒙版,作用是给用户提供信息的时候,强调弹窗信息,用户需要在关掉弹窗后才能操作其他界面。

lvxingzhe3的博客 1835

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

WPF loading遮罩层

WPF loading遮罩层 首先添加一个用户控件: <UserControl x:Class="LoadingMask_Demo.LoadingWait" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http

韬光养晦 2729

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WPF loading遮罩层 LoadingMask

大家可能很纠结在异步query数据的时候想在wpf程序中显示一个loading的遮罩吧 今天就为大家介绍下遮罩的制作 源码下载 点击此处 先上张效果图看看 如果不如您的法眼 可以移步了 或者有更好的效果 可以留言给我  废话不多说 直接贴代码 一个usercontrol <UserControl x:Class="LoadingMask_Demo.Loadin

Leo‘s Blog 2万+

WPFLoading遮层罩

一直想实现这么个功能来着,所以去网上搜了资料,复杂的看不懂,后来挑了一个最简单的,复用了这位大神的很多代码(大神看到了别打脸)。这位大神是用UserControl,使用时则是调用用户控件中的方法。之前有用过Telerik的RadBusyIndicator,感觉很好,它是将要遮罩部分直接以内容的形式包裹在RadBusyIndicator的Content属性中,使用时就更简单了,IsBusy=true

u010924028的专栏 4809

WPF 类似jquery blockUI的遮罩Loading加载效果

最近一个小项目想用WPF重写一下,需要一个类似Jquery 的blockUI的遮罩层,在后台执行任务的过程中显示Loading... 网上找了一圈,很难找到一个可以现成使用的。最终在基于网上资料的基础上,稍微改造了一下。下面附上代码: (此方案基于网络搜索获得,感谢提供对应方案的网友们) 1)新建一个BaseWindow.cs类文件 using System.Windows; using System.Windows.Controls; using System.Windows.Media; ..

zythy的专栏 848

【WPF】BusyIndicator做Loading遮罩层

【WPF】BusyIndicator做Loading遮罩层 原文:【WPF】BusyIndicator做Loading遮罩层 百度了一下,粗略看了几个国内野人的做法,花了时间看下去感觉不太好用(比如有Loading居然只是作为窗体的一个局部控件的,没法全屏遮罩,那要你有何用?),于是谷歌找轮子去。 好用的轮子:http://wpftoolk...

weixin_30745553的博客 234

第6章第4节:自定义分词器

本节详解Elasticsearch自定义分词器,解析analyzer三段式结构(char_filter→tokenizer→filter),掌握常用组件如ik_max_word、synonym_graph、ngram等。通过_analyze API调试分词效果,实现“索引时扩展同义词、搜索时不带”的生产级方案,提升中文搜索与智能提示体验。

啊渊的专栏 769
上一篇: JavaScript ES6 教程笔记
下一篇: 探究C#循环的执行效率的问题---for、.ForEach()、foreach、While
ShawnCoder
博客等级 码龄6年 150粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值