我正在使用MVVM来编写一个WPF应用程序,我不知道该用什么来处理从视图到我的ViewModel的EventArgs的自定义路由。
我的虚拟机上有一个名为- CurrentIndex的属性,在我看来这是绑定到一个控件上的;
绑定“{Value= CurrentIndex}”
当控件的值发生变化(即IndexValueChangedEventArgs)时,该控件有自己的一组EventArgs。
我正在尝试了解如何触发此事件并访问我的ViewModel的当前状态,以便我可以相应地更新视图模型。
我曾尝试使用EventTrigger (它调用命令,但它绑定到我的VM,因此我无法从控件获取自定义事件参数),并创建了一个附加行为,使我可以访问自定义EventArgs,但与我的VM无关。
我不确定我在模式中做错了什么,我想做的就是让EventArgs从ControlA进入可以与我的VM交互并进行相应更新的东西。
谢谢。
发布于 2012-04-06 23:14:12
基本上,您不是将EventArgs从视图路由到ViewModel,而是使用绑定。
您的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被设置为视图模型的一个实例。
https://stackoverflow.com/questions/10045004
复制相似问题