Wpf 附加行为或互动。触发因素?
我正在使用MVVM编写一个WPF应用程序,我不知道应该使用什么来处理EventArgs从视图到ViewModel的自定义路由 在我的虚拟机上有一个名为-CurrentIndex的属性,在我的视图上它绑定到一个控件 值={Binding CurrentIndex} 当控件的值更改时(即IndexValueChangedEventArgs),此控件有自己的一组EventArgs 我试图了解如何触发此事件并访问ViewModel的当前状态,以便相应地更新ViewModel 我尝试使用调用命令的EventTrigger执行此操作,但它已绑定到我的VM,因此我无法从控件中获取自定义事件参数,并创建了一个附加行为,该行为允许我访问自定义事件参数,但与我的VM无关 我不确定我在模式中做错了什么,我想做的就是将ControlA中的EventArgs转换成可以与我的VM交互并相应更新的内容Wpf 附加行为或互动。触发因素?,wpf,mvvm,Wpf,Mvvm,我正在使用MVVM编写一个WPF应用程序,我不知道应该使用什么来处理EventArgs从视图到ViewModel的自定义路由 在我的虚拟机上有一个名为-CurrentIndex的属性,在我的视图上它绑定到一个控件 值={Binding CurrentIndex} 当控件的值更改时(即IndexValueChangedEventArgs),此控件有自己的一组EventArgs 我试图了解如何触发此事件并访问ViewModel的当前状态,以便相应地更新ViewModel 我尝试使用调用命令的Even
谢谢。基本上,您不需要将事件参数从视图路由到视图模型,而是使用绑定 ViewModel应实现INotifyPropertyChanged。有各种各样的样板实现,但自己动手并不困难,例如
public class MyViewModel : INotifyPropertyChanged
{
#region Implementation of INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
#endregion
private void RaisePropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if(handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
private int _currentIndex;
public int CurrentIndex
{
get { return _currentIndex; }
set
{
if (value != _currentIndex)
{
_currentIndex = value;
RaisePropertyChanged("CurrentIndex");
}
}
}
}
现在,您的视图将使用已有的绑定与视图模型的更改同步
Value="{Binding CurrentIndex}"
当然,假设视图的DataContext设置为视图模型的一个实例。是的,我正在这样做,这对于将对的更改从数据推送到UI非常有效。我感兴趣的是从UI上的控件处理事件。也就是说,我有一个文本框,我连接了KeyDown事件,我想访问KeyEventArgs中的数据,并根据ViewModel中运行的代码对其进行评估。对于我的命令参数,我主要是在当前的{Binding}上下文中传递,它是我的VM,但是我没有访问事件参数的权限。我不知道你怎么能在MVVM中做到这一点。交互触发器不会有帮助。我对依恋行为了解不够。也许是时候学习了: