本文共 2585 字,大约阅读时间需要 8 分钟。
在 WPF 应用程序开发中,命令(Command)是实现应用程序逻辑的重要机制。通过命令,可以将 UI 元素与业务逻辑分开,使 UI 界面更加清晰可维护。然而,RoutedCommand 与业务逻辑无关,业务逻辑应依靠外围的 CommandBinding 来实现。
以下是一个简单的自定义控件示例,用于清除三个 TextBox 中的内容。
namespace pxy{ public partial class UserControl1 : UserControl, IView { public UserControl1() { InitializeComponent(); } public bool IsChanged { get; set; } public void Clear() { this.textBox1.Clear(); this.textBox2.Clear(); this.textBox3.Clear(); this.textBox4.Clear(); } public void Refresh() { throw new NotImplementedException(); } public void Save() { throw new NotImplementedException(); } public void SetBinding() { throw new NotImplementedException(); } }} public partial class MainWindow : Window{ public MainWindow() { InitializeComponent(); ClearCommand clearCommand = new ClearCommand(); this.ctrlClear.Command = clearCommand; this.ctrlClear.CommandTarget = this.UserControl1; }}public interface IView{ bool IsChanged { get; set; } void SetBinding(); void Refresh(); void Clear(); void Save();}public class ClearCommand : ICommand{ public event System.EventHandler CanExecuteChanged; public bool CanExecute(object parameter) { throw new NotImplementedException(); } public void Execute(object parameter) { IView view = parameter as IView; if (view != null) view.Clear(); }}public class MyCommandSource : UserControl, ICommandSource{ public ICommand Command { get; set; } public object CommandParameter { get; set; } public IInputElement CommandTarget { get; set; } protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); if (this.CommandTarget != null) this.Command.Execute(this.CommandTarget); }} 在 WPF 应用程序中,命令是用来实现业务逻辑的核心机制。通过 CommandBinding 将命令与 UI 元素绑定,可以实现 UI 元素与业务逻辑的分离。自定义命令的实现需要继承 ICommand 接口,并实现 CanExecute 和 Execute 方法。
在本文中,ClearCommand 是一个自定义命令,用于清除三个 TextBox 中的内容。MyCommandSource 是一个自定义的命令源控件,它能够捕捉左键单击事件并执行命令。通过将 ClearCommand 绑定到 MyCommandSource,可以实现清除功能。
通过以上实现,可以清晰地看到 WPF 应用程序中命令与自定义控件的结合方式。命令负责实现业务逻辑,自定义控件负责定义 UI 界面,两者通过 CommandBinding 实现了紧密的耦合。这种设计使得 UI 界面更加清晰,同时也提高了代码的可维护性和扩展性。
转载地址:http://smelz.baihongyu.com/