Meg*_*ind 13 c# wpf commandbinding icommand
有时我们使用复杂的方法很多次,我们忘记了完成任务的最简单方法.
我知道如何进行命令绑定,但我总是使用相同的方法.
创建一个实现ICommand接口的类,并从视图模型中创建该类的新实例,绑定就像一个魅力.
这是我用于命令绑定的代码
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
testCommand = new MeCommand(processor);
}
ICommand testCommand;
public ICommand test
{
get { return testCommand; }
}
public void processor()
{
MessageBox.Show("hello world");
}
}
public class MeCommand : ICommand
{
public delegate void ExecuteMethod();
private ExecuteMethod meth;
public MeCommand(ExecuteMethod exec)
{
meth = exec;
}
public bool CanExecute(object parameter)
{
return false;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
meth();
}
}
Run Code Online (Sandbox Code Playgroud)
但我想知道这样做的基本方法,没有第三方dll没有新的类创建.使用单个类执行此简单命令绑定.实际的类从ICommand接口实现并完成工作.
aif*_*rfa 15
Prism已经提供了Microsoft.Practices.Prism.Commands.DelegateCommand
我不确定它是否被视为第三方.至少它是官方的,并在MSDN上记录.
一些本机内置命令如copy,paste实现ICommand接口.恕我直言打开(扩展)/关闭(改变)原则.这样我们就可以实现自己的命令.
正如WPF命令在此记录,摘录......
WPF提供了一组预定义的命令.例如Cut,BrowseBack和BrowseForward,Play,Stop和Pause.
如果命令库类中的命令不满足您的需要,则可以创建自己的命令.有两种方法可以创建自定义命令.第一个是从头开始实现ICommand接口.另一种方式,更常见的方法是创建RoutedCommand或RoutedUICommand.
我在开始时尝试过RoutedCommand模型,最终实现了ICommand.
示例XAML绑定
<CommandBinding Command="{x:Static custom:Window1.CustomRoutedCommand}"
Executed="ExecutedCustomCommand"
CanExecute="CanExecuteCustomCommand" />
Run Code Online (Sandbox Code Playgroud)
RoutedCommand与RoutedEvent没有什么不同.这似乎是一个更好的按钮'Clicked'事件处理程序.它的目的是:将应用程序逻辑与View分开但需要一些附加DependencyProperty或代码隐藏.
我个人觉得只需要实现我的ICommand就更舒服了.
| 归档时间: |
|
| 查看次数: |
53326 次 |
| 最近记录: |