帝国后台网站如何设置自动刷新首网站制作郑州网站制作

张小明 2025/12/29 21:47:20
帝国后台网站如何设置自动刷新首,网站制作郑州网站制作,vuejs做视频网站,营销话术与技巧本文主要用于介绍WPF基于MVVM实现自定义分页控件的代码实现。 主要功能#xff1a; 自定义页码#xff0c;当前页/总页数, 上一页#xff0c;下一页#xff0c;返回首页#xff0c;返回最后一页#xff0c; 利用FontAwesome作为FontFamily实现icon的功能。 本代码中的Vi…本文主要用于介绍WPF基于MVVM实现自定义分页控件的代码实现。主要功能 自定义页码当前页/总页数, 上一页下一页返回首页返回最后一页 利用FontAwesome作为FontFamily实现icon的功能。本代码中的ViewModelBase的实现请参照另一篇文章WPF MVVM ViewModelBase造轮子实现类似MVVMLight的功能1. 创建PaginationControl1.1 Color BrushSolidColorBrush x:KeyHighlightBrush Color#E84315 / SolidColorBrush x:KeyDisabledForegroundBrush Color#888 /1.2 PaginationControl.xaml.cs不用更改任何代码1.3 PaginationControl.xamlUserControl x:ClassMES.UI.Views.CustomControls.PaginationControl xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation xmlns:xhttp://schemas.microsoft.com/winfx/2006/xaml xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006 xmlns:dhttp://schemas.microsoft.com/expression/blend/2008 xmlns:ihttp://schemas.microsoft.com/xaml/behaviors xmlns:localclr-namespace:MES.UI.Views.CustomControls mc:Ignorabled Height45 UserControl.Resources Style x:KeypaginationTB TargetType{x:Type TextBlock} Setter PropertyFontSize Value20/ Setter PropertyFontFamily Valuepack://application:,,,/Resources/#FontAwesome/ Setter PropertyMargin Value5,15,5,10/ Setter PropertyForeground Value{StaticResource HighlightBrush}/ Setter PropertyCursor ValueHand/ Style.Triggers Trigger PropertyIsEnabled ValueTrue Setter PropertyForeground Value{StaticResource HighlightBrush}/ /Trigger Trigger PropertyIsEnabled ValueFalse Setter PropertyForeground Value{StaticResource DisabledForegroundBrush}/ /Trigger /Style.Triggers /Style /UserControl.Resources StackPanel OrientationHorizontal VerticalAlignmentCenter TextBlock TextPage Size: Margin5,15,5,10/TextBlock ComboBox x:NamePageSizeComboBox ItemsSource{Binding PageSizes} SelectedItem{Binding PageSize} Width70 VerticalAlignmentCenter HorizontalAlignmentCenter/ TextBlock Style{StaticResource paginationTB} IsEnabled{Binding EnabledPreviousButton} Text#xf100; x:NamebtnFirstPage ToolTipFirst Page i:Interaction.Triggers i:EventTrigger EventNameMouseLeftButtonDown i:InvokeCommandAction Command{Binding FirstPageCommand}/ /i:EventTrigger /i:Interaction.Triggers /TextBlock TextBlock Style{StaticResource paginationTB} IsEnabled{Binding EnabledPreviousButton} Text#xf104; x:NamebtnPrevious ToolTipPreviouse i:Interaction.Triggers i:EventTrigger EventNameMouseLeftButtonDown i:InvokeCommandAction Command{Binding PreviousPageCommand}/ /i:EventTrigger /i:Interaction.Triggers /TextBlock TextBlock NametxtCurrentPageTextBlock Text{Binding CurrentPageText} Margin5,15,5,10 VerticalAlignmentCenter / TextBlock Style{StaticResource paginationTB} IsEnabled{Binding EnabledNextButton} Text#xf105; x:NamebtnNext ToolTipNext i:Interaction.Triggers i:EventTrigger EventNameMouseLeftButtonDown i:InvokeCommandAction Command{Binding NextPageCommand}/ /i:EventTrigger /i:Interaction.Triggers /TextBlock TextBlock Style{StaticResource paginationTB} IsEnabled{Binding EnabledNextButton} Text#xf101; x:NamebtnLastPage ToolTipLast Page i:Interaction.Triggers i:EventTrigger EventNameMouseLeftButtonDown i:InvokeCommandAction Command{Binding LastPageCommand}/ /i:EventTrigger /i:Interaction.Triggers /TextBlock /StackPanel /UserControl2. 创建PaginationControlViewModel/// summary/// Pagination Control ViewModel/// /summarypublicclassPaginationControlViewModel:ViewModelBase{#regionPagination paramtersprivateint_currentPage;privateint_totalItems;privateint_pageSize1;publicintTotalItems{get_totalItems;set{_totalItemsvalue;OnPropertyChanged(nameof(TotalItems));OnPropertyChanged(nameof(TotalPages));OnPropertyChanged(nameof(CurrentPageText));SetButtonStatus();}}publicintPageSize{get_pageSize;set{_pageSizevalue;OnPropertyChanged(nameof(PageSize));OnPageChanged();}}publicintCurrentPage{get_currentPage;set{if(_currentPage!value){_currentPagevalue;OnPropertyChanged(nameof(CurrentPage));OnPageChanged();}}}publicstringCurrentPageText{get{return$Page{CurrentPage}of{TotalPages};}}publicintTotalPages(TotalItemsPageSize-1)/PageSize;privateObservableCollectionint_pageSizes;publicObservableCollectionintPageSizes{get{return_pageSizes;}set{_pageSizesvalue;OnPropertyChanged(nameof(PageSizes));}}privatebool_enabledPreviousButton;publicboolEnabledPreviousButton{get{return_enabledPreviousButton;}set{_enabledPreviousButtonvalue;OnPropertyChanged(nameof(EnabledPreviousButton));}}privatebool_enabledNextButton;publicboolEnabledNextButton{get{return_enabledNextButton;}set{_enabledNextButtonvalue;OnPropertyChanged(nameof(EnabledNextButton));}}#endregionpublicICommandFirstPageCommand{get;}publicICommandPreviousPageCommand{get;}publicICommandNextPageCommand{get;}publicICommandLastPageCommand{get;}publiceventEventHandlerPageChanged;privateboolisInitializedfalse;// avoid call OnPageChanged in initialpublicPaginationControlViewModel(){_pageSizesnewObservableCollectionint{1,20,50,100,200,300,500};CurrentPage1;// Initialize to the first pagePageSizeAgencyCRMConstants.DefaultPageSize;FirstPageCommandnewRelayCommand(_CurrentPage1);PreviousPageCommandnewRelayCommand(_{if(CurrentPage1)CurrentPage--;});NextPageCommandnewRelayCommand(_{if(CurrentPageTotalPages)CurrentPage;});LastPageCommandnewRelayCommand(_CurrentPageTotalPages);isInitializedtrue;}protectedvirtualvoidOnPageChanged(){if(isInitialized){PageChanged?.Invoke(this,EventArgs.Empty);}}privatevoidSetButtonStatus(){if(isInitialized){if(CurrentPage1){EnabledPreviousButtontrue;}else{EnabledPreviousButtonfalse;}if(CurrentPage1CurrentPageTotalPages){EnabledNextButtontrue;}else{EnabledNextButtonfalse;}}else{EnabledNextButtonfalse;EnabledPreviousButtonfalse;}}}3. 调用3.1 在CompanyListViewModel中引用PaginationControlViewModelpublicclassCompanyListViewModel:ViewModelBase,IViewModelDispose{#regionAgency.CRM API UrlsprivateconststringGetByCompanyNameAsyncapi/Company/GetByCompanyName?CompanyName{0}pageNumber{1}pageSize{2};#endregion#regionModelsprivatereadonlyIMESHttpClientService_mesHttpClientService;privateBackgroundWorker_backgroundWorker;publicPaginationControlViewModelPaginationViewModel;privatestring?_CompanyName;publicstring?CompanyName{get{return_CompanyName;}set{_CompanyNamevalue;OnPropertyChanged(nameof(CompanyName));}}privatebool_isEnableExport;publicboolIsEnableExport{get{return_isEnableExport;}set{_isEnableExportvalue;OnPropertyChanged(nameof(IsEnableExport));}}privateCompanyDto?_selectedCompany;publicCompanyDto?SelectedCompany{get{return_selectedCompany;}set{_selectedCompanyvalue;OnPropertyChanged(nameof(SelectedCompany));}}privateObservableCollectionCompanyDto_CompanyList;publicObservableCollectionCompanyDtoCompanyList{get{return_CompanyList;}set{_CompanyListvalue;OnPropertyChanged(nameof(CompanyList));}}privateintpageSizeMESConstants.DefaultPageSize;privateintcurrentPage1;#endregion#regionctorpublicCompanyListViewModel(){_mesHttpClientServiceNInjectBase.Kernel.GetIMESHttpClientService();_CompanyListnew();_backgroundWorkernewBackgroundWorker();_backgroundWorker.DoWorkBackgroundWorker_DoWork;_backgroundWorker.RunWorkerCompletedBackgroundWorker_RunWorkerCompleted;InitialParameters();}privatevoidInitialParameters(){_CompanyNamestring.Empty;PaginationViewModelnewPaginationControlViewModel();PaginationViewModel.PageSizeMESConstants.DefaultPageSize;_selectedCompanynew();PaginationInitial();}#endregion#regionICommandspublicICommand?RefreshRecordsCommand{get{returnnewDelegateCommand((){RefreshRecords();});}}publicICommand?ResetFilterCommand{get{returnnewDelegateCommand((){ResetFilterFunction();});}}#endregion#regionFunctionsprivatevoidResetFilterFunction(){InitialParameters();RefreshRecords();}publicvoidRefreshRecords(){AppEvents.Instance.StartProgressBar(this,newProgressBarDisplayEventArgs(AppConstants.ProgressBarMessages.Generic.LOADING));_backgroundWorker.RunWorkerAsync(newListstring(){CompanyName,currentPage.ToString(),pageSize.ToString()});}privatevoidBackgroundWorker_RunWorkerCompleted(object?sender,RunWorkerCompletedEventArgse){if(e.Errornull){varresulte.ResultasPagedResultDtoCompanyDto;if(result!null){int.TryParse(result.TotalCount.ToString(),outvartotalCount);PaginationViewModel.TotalItemstotalCount;CompanyListresult.Items;this.IsEnableExportCompanyList?.Count0;}else{this.IsEnableExportfalse;}}AppEvents.Instance.StopProgressBar(this);}privatevoidBackgroundWorker_DoWork(object?sender,DoWorkEventArgse){try{varparameterse.ArgumentasListstring;if(parametersnull||parameters.Count!3)return;usingvarhttpClient_mesHttpClientService.GetHttpClient();stringurlWithParametersstring.Format(GetByCompanyNameAsync,parameters[0],parameters[1],parameters[2]);varresponsehttpClient.GetAsync(urlWithParameters).Result;if(response.IsSuccessStatusCode){varjsonresponse.Content.ReadAsStringAsync().Result;varresultJsonConvert.DeserializeObjectPagedResultDtoCompanyDto(json);e.Resultresult;}}catch(Exceptionex){Log.Error(Error loading CRM users,ex);}}publicvoidDisposeRecordsAndEvents(){CompanyListnew();_backgroundWorker.DoWork-BackgroundWorker_DoWork;_backgroundWorker.RunWorkerCompleted-BackgroundWorker_RunWorkerCompleted;_backgroundWorker.Dispose();PaginationDispose();}#endregion#regionPaginationprivatevoidPaginationInitial(){PaginationViewModelnew();PaginationViewModel.PageChangedPaginationControlViewModel_PageChanged;}privatevoidPaginationDispose(){PaginationViewModel.PageChanged-PaginationControlViewModel_PageChanged;}privatevoidPaginationControlViewModel_PageChanged(object?sender,EventArgse){pageSizePaginationViewModel.PageSize;currentPagePaginationViewModel.CurrentPage;RefreshRecords();}#endregion}3.2 CompanyList.xaml中添加PaginationControlCustomControls:PaginationControl x:NamepaginationControl/CustomControls:PaginationControl3.3 CompanyList.xaml.cs中为PaginationControl指定DataContextprivatevoidUserControl_Loaded(objectsender,System.Windows.RoutedEventArgse){paginationControl.DataContextViewModel.PaginationViewModel;ViewModel.RefreshRecords();}4. 最终实现效果
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

揭阳企业建站系统注册公司代理费用多少钱

还在为Python Web开发中的各种坑而头疼吗?🤯 今天咱们就来聊聊Solara框架这个"神器",让你在Jupyter集成和Web应用开发中游刃有余!作为一个纯Python实现的React风格框架,Solara让数据科学和Web开发的结合变得…

张小明 2025/12/27 18:40:38 网站建设

单页网站怎么制作教程微信网页版是什么

揭秘pyEIT:5分钟掌握医学成像黑科技 【免费下载链接】pyEIT Python based toolkit for Electrical Impedance Tomography 项目地址: https://gitcode.com/gh_mirrors/py/pyEIT 电阻抗断层成像(EIT)作为一项颠覆性的非侵入性检测技术&a…

张小明 2025/12/27 18:40:06 网站建设

怎样做网站手机和电脑通用电子商务专业有什么用

求三阶传递函数的阶跃响应 其中对象采样时间为1ms。 采用专家PID设置控制器。 在仿真过程中取0.001,程序中的五条规则与控制算法的五种情况相对应。 在控制系统的研究中,分析三阶传递函数的阶跃响应并通过合适的控制算法进行优化是常见的任务。今天咱们…

张小明 2025/12/27 18:39:02 网站建设

故宫网站建设深圳投资公司排名前十

5分钟快速上手:免费STOMP客户端实现跨平台实时通信 【免费下载链接】stomp-websocket Stomp client for Web browsers and node.js apps 项目地址: https://gitcode.com/gh_mirrors/st/stomp-websocket 在现代互联网应用开发中,实时通信已经成为不…

张小明 2025/12/27 18:38:30 网站建设

省网站建设写一个wordpress下载插件

43 限界上下文入门(下):如何识别限界上下文?(3 个实操方法) 你好,欢迎来到第 43 讲。 在上一讲,我们理解了限界上下文的本质——它是模型和语言保持一致性的“保护罩”,是 DDD 战略设计的基石。 理论是清晰的,但实践是困难的。在面对一个全新的、错综复杂的业务领…

张小明 2025/12/27 18:37:58 网站建设

专门做动漫的网站大公司网站色彩设计

摘要:随着云游戏技术成熟,云电脑已成为玩家畅玩3A大作的主流选择。但市场上服务众多,宣传各异,究竟谁家延迟最低?谁家配置最强?谁家价格最实在?本测评对十款主流云电脑及云游戏平台进行了深度实…

张小明 2025/12/27 18:37:26 网站建设