备案ip 查询网站查询网站,做一个网站的流程是什么,自己做的网站怎么爬数据,wordpress 自定义菜单界面参数的传递#xff0c;界面参数是如何从前台传送到后台的。 param 参数是从界面传递到命令的。这个过程通常涉及以下几个步骤#xff1a; 数据绑定#xff1a;界面元素#xff08;如按钮#xff09;的 Command 属性绑定到视图模型中的 RelayCommand 实例。同时#x…界面参数的传递界面参数是如何从前台传送到后台的。 param 参数是从界面传递到命令的。这个过程通常涉及以下几个步骤 数据绑定界面元素如按钮的 Command 属性绑定到视图模型中的 RelayCommand 实例。同时界面元素的 CommandParameter 属性如果有的话可以绑定到视图模型中的某个属性或直接设置为一个静态值。这个 CommandParameter 就是传递给 RelayCommand 的 param 参数。 命令触发当用户与界面元素交互例如点击按钮时会触发绑定的命令。WPF 框架会调用命令的 Execute 方法如果命令可执行或 CanExecute 方法以检查命令是否可执行。 参数传递在命令触发时CommandParameter 的值被传递给命令的 Execute 和 CanExecute 方法作为 param 参数。 参数使用在 RelayCommand 的 lambda 表达式中param 被转换为 ViewModel 类型这里假设传递的参数实际上是 ViewModel 类型的实例或可以安全地转换为 ViewModel 类型。然后这个转换后的 ViewModel 实例被传递给 SaveUser 方法或 IsUserSaveEnabled 方法。 属性访问在 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));Button2Commandnew RelayCommand(param Button2Click(), paramtrue);this.TempUserName 网易;this.TempEmail 123456163.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 Actionobject _execute;// public event EventHandler CanExecuteChanged;// public RelayCommand(Actionobject execute) _execute execute;// public bool CanExecute(object parameter) true; // 总是可执行简化// public void Execute(object parameter) _execute(parameter);//}public class RelayCommand : ICommand{private readonly Actionobject _execute;private readonly Funcobject, bool _canExecute;public RelayCommand(Actionobject execute, Funcobject, 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:ClassIcommand练习.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:Icommand练习mc:IgnorabledTitleMainWindow Height450 Width800StackPanelTextBox Text{Binding UserName, UpdateSourceTriggerPropertyChanged} /TextBox Text{Binding Email, UpdateSourceTriggerPropertyChanged} /Button Content登录 Command{Binding SaveCommand} CommandParameter{Binding} /Button Command{Binding Button2Command} Content账户历史//StackPanel
/Window