目标:想在viewModel中动态改变控件的一些属性。
要求:在某一个控件的一个特定事件触发后,改变另一个控件的一些属性。
想法:创建一个RelayCommand类,实现ICommand接口,大概代码如下:
public class RelayCommand:ICommand
{
Action _handler;
public RelayCommand(Action handler)
{
_handler=handler;
}
...........
}
同时在viewmodel中暴露一个ICommand属性,如下:
ICommand _certainHandler;
public ICommand CertainHandler
{
get{ return _certainHandler=new RelayCommand(处理方法签名);}
}
在xaml中的控件上通过<i:Interaction:Trigger>
<i:EventTrigger EventName='.....'>
<i:InvokeCommandAction Command={"Binding ..."}/>
</i:EventTrigger>
</i:Interaction:Trigger>
问题:如何在方法签名中获得view中的控件?还用RelayCommand<T>一般是用在什么情况,如何使用?
我感觉的你的思路有点不对头,你不应该试图在viewmode中使用view中的控件,而应该用view控件绑定到viewmodel的属性上,然后在你的方法里直接更新这个属性,然后通过wpfbinding知识,去更新view。