当前位置: 首页 > wzjs >正文

怎么制作网站的网页设计seo优化教程视频

怎么制作网站的网页设计,seo优化教程视频,php网站开发实例教程案例,怎么给网站做链接屏蔽MVVM 模式基础 视图模型(ViewModel):MainViewModel类作为视图模型,封装了与视图相关的属性和命令。它实现了INotifyPropertyChanged接口,当属性值发生改变时,通过OnPropertyChanged方法通知视图进行更新&am…
  1. MVVM 模式基础
    • 视图模型(ViewModel)MainViewModel类作为视图模型,封装了与视图相关的属性和命令。它实现了INotifyPropertyChanged接口,当属性值发生改变时,通过OnPropertyChanged方法通知视图进行更新,确保视图与数据的一致性。
    • 视图(View):在 XAML 文件中定义,通过数据绑定将ButtonWidthHeight属性与视图模型的ButtonWidthButtonHeight属性关联起来,实现视图对数据的展示。同时,将按钮的点击事件绑定到视图模型的ResizeButtonCommand命令,使视图的交互操作能触发视图模型中的逻辑。
  2. 动画创建与管理
    • Storyboard 初始化:在视图模型的InitializeStoryboard方法中,创建了一个Storyboard对象_resizeStoryboard,用于管理和协调多个动画。
    • DoubleAnimation 创建:为按钮的宽度和高度变化分别创建了DoubleAnimation对象。这些动画定义了从初始值(From属性)到目标值(To属性)的过渡,这里目标值是初始值的 1.5 倍。动画的持续时间由Duration属性设置为 0.5 秒,AutoReverse属性设置为true,使动画在到达目标值后自动反向播放,RepeatBehavior属性设置为RepeatBehavior.Forever,让动画无限循环。
  3. 命令绑定与参数传递
    • MyCommand 实现:定义了MyCommand类来实现ICommand接口,该类允许将一个Action<object>作为参数传递给构造函数,在按钮点击时执行相应的逻辑。
    • 命令绑定:在视图模型的构造函数中,将ResizeButtonCommand初始化为MyCommand的实例,并关联到ExecuteResizeButtonCommand方法,该方法处理按钮点击后的逻辑。
    • 参数传递:在视图中,通过CommandParameter="{Binding ElementName=PART_Button}"将按钮自身作为参数传递给命令。在视图模型的ExecuteResizeButtonCommand方法中,通过判断参数类型来获取按钮实例,以便正确设置动画目标和启动动画。
  4. 事件处理与状态管理
    • 点击事件处理ExecuteResizeButtonCommand方法负责处理按钮的点击事件。它根据_isAnimating标志判断当前动画状态,若正在动画,则停止动画并将按钮大小恢复到初始值;若未动画,则启动动画。每次点击按钮时,都会切换_isAnimating标志的值,以记录动画状态。

      5.代码

MainWindow.xaml

<Window x:Class="WpfAppButtonResize.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:WpfAppButtonResize"xmlns:local2="clr-namespace:WpfAppButtonResize.ViewModel"mc:Ignorable="d"Title="MainWindow" Height="350" Width="525"><Window.DataContext><local2:MainWindowViewModel/></Window.DataContext><Grid><Button Content="点击我" Width="{Binding ButtonWidth}" Height="{Binding ButtonHeight}" Command="{Binding ResizeButtonCommand}"CommandParameter="{Binding ElementName=PART_Button}"Name="PART_Button"/></Grid>
</Window>

MainWindowViewModel.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media.Animation;namespace WpfAppButtonResize.ViewModel
{public class MainWindowViewModel:Notify{private double _buttonWidth = 100;private double _buttonHeight = 50;private bool _isAnimating = false;private Storyboard _resizeStoryboard;public double ButtonWidth{get { return _buttonWidth; }set{_buttonWidth = value;OnPropertyChanged();}}public double ButtonHeight{get { return _buttonHeight; }set{_buttonHeight = value;OnPropertyChanged();}}public ICommand ResizeButtonCommand { get; private set; }public MainWindowViewModel(){ResizeButtonCommand = new MyCommand(ExecuteResizeButtonCommand);InitializeStoryboard();}private void InitializeStoryboard(){_resizeStoryboard = new Storyboard();// 宽度动画DoubleAnimation widthAnimation = new DoubleAnimation{From = _buttonWidth,To = _buttonWidth * 1.5,Duration = TimeSpan.FromSeconds(0.5),AutoReverse = true,RepeatBehavior = RepeatBehavior.Forever};// 这里后续在设置目标时会修正_resizeStoryboard.Children.Add(widthAnimation);// 高度动画DoubleAnimation heightAnimation = new DoubleAnimation{From = _buttonHeight,To = _buttonHeight * 1.5,Duration = TimeSpan.FromSeconds(0.5),AutoReverse = true,RepeatBehavior = RepeatBehavior.Forever};_resizeStoryboard.Children.Add(heightAnimation);}private void ExecuteResizeButtonCommand(object parameter){if (parameter is Button button){if (_isAnimating){_resizeStoryboard.Stop();ButtonWidth = 100;ButtonHeight = 50;}else{// 设置宽度动画的目标和属性路径Storyboard.SetTarget(_resizeStoryboard.Children[0] as DoubleAnimation, button);Storyboard.SetTargetProperty(_resizeStoryboard.Children[0] as DoubleAnimation, new PropertyPath("(FrameworkElement.Width)"));// 设置高度动画的目标和属性路径Storyboard.SetTarget(_resizeStoryboard.Children[1] as DoubleAnimation, button);Storyboard.SetTargetProperty(_resizeStoryboard.Children[1] as DoubleAnimation, new PropertyPath("(FrameworkElement.Height)"));_resizeStoryboard.Begin();}_isAnimating = !_isAnimating;}}}
}

MyCommand.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;namespace WpfAppButtonResize
{public class MyCommand : ICommand{private readonly Action _execute;private readonly Action<object> _execute2;private readonly Func<bool> _canExecute;public MyCommand(Action<object> execute){_execute2 = execute;}public MyCommand(Action execute, Func<bool> canExecute = null){_execute = execute;_canExecute = canExecute;}public event EventHandler CanExecuteChanged{add { CommandManager.RequerySuggested += value; }remove { CommandManager.RequerySuggested -= value; }}public bool CanExecute(object parameter){return _canExecute == null || _canExecute();}public void Execute(object parameter){if (_execute != null){_execute();}else if (_execute2 != null){_execute2(parameter);}}}
}

Notify.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;namespace WpfAppButtonResize
{public abstract class Notify : INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged([CallerMemberName] string name = null){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));}}
}

http://www.dtcms.com/wzjs/366895.html

相关文章:

  • 承德网站建设制作网站推广软件免费
  • 橙子建站教程长春网络营销公司
  • 网站移动字幕要怎么做公司推广文案
  • 东莞外贸网站推广建设西安外包公司排行
  • 渭南市住房和城乡建设部网站免费推广网站有哪些
  • b2b网站推广优化seo快速排名软件网站
  • 威海哪家做网站好seo门户网站
  • 中国网络安全厂商排名seo竞争对手分析
  • 铁岭市网站建设公司网站怎么seo关键词排名优化推广
  • 系统开发定制seo原创工具
  • 河北建设工程信息网已取消安徽网站seo
  • 做网站怎么字体全部变粗了线上营销方式主要有哪些
  • 网站建设与运营培训班优化关键词规则
  • 就有公司域名怎么建设网站seo外包公司哪家专业
  • 建设个b2c网站浙江百度推广
  • 有做网站维护的微信朋友圈产品推广语
  • 做阿里云网站的公司吗海南seo
  • 建设一个网站市场营销最有效的手段
  • 济南网站建设建站免费seo免费培训
  • 唐山网站建设优化南宁企业官网seo
  • 苏州网站建设设计制作公司怎么样游戏推广话术
  • 音乐网站还可以做代发广告平台
  • 餐饮加盟网站制作网络营销策划方案模板
  • 做婚纱网站是怎么确认主题四川网站seo
  • 怎么用电脑做网站主机个人网页制作成品
  • 外贸b2c网站规划平面设计培训费用一般是多少
  • 网站建设公司的案例成都网络营销公司
  • 大红门桥做网站怎样自己做网站
  • 公司做网站比较好的平台谷歌google官方下载
  • 做电影采集网站需要多大vps营销策略有哪些理论