概述
在wpf项目中,以button为例,除了click 触发点击事件外,还可以通过command特性来实现。
使用这种方式的好处就是:
不必在xaml对应的cs文件里面进行复杂的编辑,可以将其引导至某个ViewModel.cs文件中进行统一处理。
方法
首先,你需要一个MyICommand类
public class MyICommand : ICommand
{
Action _TargetExecuteMethod;
Func<bool> _TargetCanExecuteMethod;
public MyICommand(Action executeMethod)
{
_TargetExecuteMethod = executeMethod;
}
public MyICommand(Action executeMethod, Func<bool> canExecuteMethod)
{
_TargetExecuteMethod = executeMethod;
_TargetCanExecuteMethod = canExecuteMethod;
}
public void RaiseCanExecuteChanged()
{
CanExecuteChanged(this, EventArgs.Empty);
}
bool ICommand.CanExecute(object parameter)
{
if (_TargetCanExecuteMethod != null)
{
return _TargetCanExecuteMethod();
}
if (_TargetExecuteMethod != null)
{
return true;
}
return false;
}
public event EventHandler CanExecuteChanged = delegate { };
void ICommand.Execute(object parameter)
{
if (_TargetExecuteMethod != null)
{
_TargetExecuteMethod();
}
}
}
然后,在你的ViewModel.cs文件中,通过构造函数使用它
public MyICommand YourCommand { get; private set; }
public ViewModel()
{
YourCommand = new MyICommand(OnYourCommand );
}
private void OnYourCommand ()
{
//do sth.
}
最后,在View.xaml中,绑定并应用你的Command方法
注意:这个需要你的xaml能够访问到你的ViewModel.cs,否则会绑定失败。
以下,是将一个button绑定指令ConnectToggleCommand。
<Button Name="Btn_ConnectDevice" Margin="150,0,0,0"
Command = "{Binding ConnectToggleCommand}"
Content="{Binding BtnConnectAttributes.BtnContent}"
IsEnabled="{Binding BtnConnectAttributes.IsEnable}"
HorizontalAlignment="Left" VerticalAlignment="Center"
Width = "150" Height="Auto" Cursor="Hand">
</Button>
这样之后,你就可以通过点击这个Button,触发他的Command指令了。
在WPF项目中,通过实现ICommand接口创建自定义命令类MyICommand,可以在ViewModel中集中管理按钮的点击事件,避免XAML代码后面复杂编辑。在ViewModel实例化时绑定命令,然后在XAML中将按钮的Command属性绑定到ViewModel的对应命令,以此触发和处理点击事件。

9369

被折叠的 条评论
为什么被折叠?



