帝国后台网站如何设置自动刷新首网站制作郑州网站制作
帝国后台网站如何设置自动刷新首,网站制作郑州网站制作,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. 最终实现效果