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

备案ip 查询网站查询网站图片网站模板下载

备案ip 查询网站查询网站,图片网站模板下载,安徽龙山建设网站,有名的淘宝客网站界面参数的传递,界面参数是如何从前台传送到后台的。 param 参数是从界面传递到命令的。这个过程通常涉及以下几个步骤: 数据绑定:界面元素(如按钮)的 Command 属性绑定到视图模型中的 RelayCommand 实例。同时&#x…

界面参数的传递,界面参数是如何从前台传送到后台的。

param 参数是从界面传递到命令的。这个过程通常涉及以下几个步骤:

  1. 数据绑定:界面元素(如按钮)的 Command 属性绑定到视图模型中的 RelayCommand 实例。同时,界面元素的 CommandParameter 属性(如果有的话)可以绑定到视图模型中的某个属性或直接设置为一个静态值。这个 CommandParameter 就是传递给 RelayCommand 的 param 参数。

  2. 命令触发:当用户与界面元素交互(例如点击按钮)时,会触发绑定的命令。WPF 框架会调用命令的 Execute 方法(如果命令可执行)或 CanExecute 方法(以检查命令是否可执行)。

  3. 参数传递:在命令触发时,CommandParameter 的值被传递给命令的 Execute 和 CanExecute 方法作为 param 参数

  4. 参数使用:在 RelayCommand 的 lambda 表达式中,param 被转换为 ViewModel 类型(这里假设传递的参数实际上是 ViewModel 类型的实例或可以安全地转换为 ViewModel 类型)。然后,这个转换后的 ViewModel 实例被传递给 SaveUser 方法或 IsUserSaveEnabled 方法。

  5. 属性访问:在 SaveUser 或 IsUserSaveEnabled 方法中,就可以安全地访问 ViewModel 实例的属性,如 UserName。由于这些方法接收的是已经转换为正确类型的 ViewModel 实例,因此可以直接读取其属性。

一开始无法点击登录

然后点击账户历史自动填入

填入其他内容后再点击登录,账户历史会更新

ViewModel代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;namespace Icommand练习
{class ViewModel:INotifyPropertyChanged{private string _userName;public string UserName{get { return _userName; }set { _userName = value; OnPropertyChanged(nameof(UserName)); }}private string _email;public string Email{get { return _email; }set { _email = value; OnPropertyChanged(nameof(Email)); }}private string _tempUserName;public string TempUserName{get { return _tempUserName; }set { _tempUserName = value; }}private string _tempEmail;public string TempEmail{get { return _tempEmail; }set { _tempEmail = value; }}public ICommand SaveCommand { get; private set; }public ViewModel(){SaveCommand = new RelayCommand(param => SaveUser((ViewModel)param), param => IsUserSaveEnabled((ViewModel)param));Button2Command=new RelayCommand(param => Button2Click(), param=>true);this.TempUserName = "网易";this.TempEmail = "123456@163.com";}private void SaveUser(ViewModel user){// 在这里实现保存用户的逻辑,比如调用API或保存到数据库// 这里只是简单打印用户信息MessageBox.Show($"Saving user: UserName={user.UserName}, Email={user.Email}");user.TempUserName = _userName;user.TempEmail = _email;}private bool IsUserSaveEnabled(ViewModel viewModel){if (viewModel == null){// 如果 param 不是 ViewModel 类型或者为 null,则返回 falsereturn false;}// 现在可以安全地访问 viewModel.UserNamereturn !string.IsNullOrEmpty(viewModel.UserName);}public ICommand Button2Command {  get; }public void Button2Click(){UserName = TempUserName;Email = TempEmail;}//固定public event PropertyChangedEventHandler PropertyChanged;protected void OnPropertyChanged([CallerMemberName] string propertyName = null){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}}//public class RelayCommand : ICommand//{//    private readonly Action<object> _execute;//    public event EventHandler CanExecuteChanged;//    public RelayCommand(Action<object> execute) => _execute = execute;//    public bool CanExecute(object parameter) => true; // 总是可执行(简化)//    public void Execute(object parameter) => _execute(parameter);//}public class RelayCommand : ICommand{private readonly Action<object> _execute;private readonly Func<object, bool> _canExecute;public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null){_execute = execute ?? throw new ArgumentNullException(nameof(execute));_canExecute = canExecute;}public bool CanExecute(object parameter){return _canExecute == null || _canExecute(parameter);}public void Execute(object parameter){_execute(parameter);}public event EventHandler CanExecuteChanged{add { CommandManager.RequerySuggested += value; }remove { CommandManager.RequerySuggested -= value; }}// 可以在这里添加额外的逻辑来处理 CanExecuteChanged 事件的触发,但上面的实现已经足够用于大多数场景。}}

XAMl代码:

<Window x:Class="Icommand练习.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:Icommand练习"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><StackPanel><TextBox Text="{Binding UserName, UpdateSourceTrigger=PropertyChanged}" /><TextBox Text="{Binding Email, UpdateSourceTrigger=PropertyChanged}" /><Button Content="登录" Command="{Binding SaveCommand}" CommandParameter="{Binding}" /><Button Command="{Binding Button2Command}" Content="账户历史"/></StackPanel>
</Window>

http://www.yayakq.cn/news/143354/

相关文章:

  • 新塘网站seo优化三星网上商城app官方版
  • 沈阳网站维护公司华为企业网站建设需求分析
  • 网站制作全包多少钱个人网站备案 名称
  • 儿童玩具网站建设策划书区块链技术做网站
  • 建一个交易网站需要多少钱手机appui设计
  • 建设网站的公司广州wordpress怎么做目录的列表
  • 天水建设局网站渣土治理笔记本做网站
  • 如何设计好网站论坛网站方案
  • 网站移动端就是app吗app网站区别
  • 有网站源代码能自己做网站吗摄影大赛官网
  • 做app模板网站有哪些内容重庆建网站哪家售后服务比较好
  • 网站主机一个g做网站建设一条龙全包
  • 网站托管费用 优帮云炫酷的企业网站模板免费下载
  • php大型综合网站源码网站建设实用的网站
  • 网站建设与管理学的是什么wordpress 新浪微博图床
  • 小程序可以做网站吗网站建设 分类
  • 网站栏目策划凡客还在吗
  • 免费的网站软件windows优化大师好不好
  • 网站 自定义表单php网站开发结构
  • 西安做网站费用做app必须有网站吗
  • 东莞建设网站公司搜索引擎优化的具体措施
  • 城乡企业建设部网站网站meta标签怎么做
  • 公司建设网站费用直接列支网络推广培训学院
  • 招聘网站代做嘉兴seo公司网站
  • 自主建站是什么意思蚌埠百度做网站
  • 网络结构有哪几种网络营销乐云seo
  • 企业网站建设搭建加强专业建设的主要举措
  • 万州建网站百汇游戏网站开发商
  • 织梦网站安装教程电子商务发展的前景
  • 山西推广网站建设学历提升文案