首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依附行为还是Interaction.Triggers?

依附行为还是Interaction.Triggers?
EN

Stack Overflow用户
提问于 2012-04-06 22:39:47
回答 1查看 552关注 0票数 0

我正在使用MVVM来编写一个WPF应用程序,我不知道该用什么来处理从视图到我的ViewModel的EventArgs的自定义路由。

我的虚拟机上有一个名为- CurrentIndex的属性,在我看来这是绑定到一个控件上的;

绑定“{Value= CurrentIndex}”

当控件的值发生变化(即IndexValueChangedEventArgs)时,该控件有自己的一组EventArgs。

我正在尝试了解如何触发此事件并访问我的ViewModel的当前状态,以便我可以相应地更新视图模型。

我曾尝试使用EventTrigger (它调用命令,但它绑定到我的VM,因此我无法从控件获取自定义事件参数),并创建了一个附加行为,使我可以访问自定义EventArgs,但与我的VM无关。

我不确定我在模式中做错了什么,我想做的就是让EventArgs从ControlA进入可以与我的VM交互并进行相应更新的东西。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-04-06 23:14:12

基本上,您不是将EventArgs从视图路由到ViewModel,而是使用绑定。

您的ViewModel应该实现INotifyPropertyChanged。有各种各样的样板实现,但自己做并不难,例如

代码语言:javascript
复制
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");
            }
        }
    }
}

现在,将使用已有的绑定将视图与视图模型的更改同步

代码语言:javascript
复制
Value="{Binding CurrentIndex}"

当然,假设视图的DataContext被设置为视图模型的一个实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10045004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档