如何将数据从Trigger传递到Xamarin.Forms中的视图模型?

时间:2017-10-30 12:33:26

标签: c# mvvm xamarin.forms

我创建了这个简单的触发器:

public class SelectedChangedTrigger : TriggerAction<ListView>
    {

        protected override void Invoke(ListView sender)
        {
            var selectedItem = sender.SelectedItem as Item;

        }
    }
在XAML中

        <ListView.Triggers>
            <EventTrigger Event="ItemSelected">
                <triggers:SelectedChangedTrigger/>
            </EventTrigger>
        </ListView.Triggers>

所以我想将视图模型中的string属性绑定到selectedItem.Title

1 个答案:

答案 0 :(得分:0)

首先,我强烈建议,如果您需要更新ItemSelected事件的视图模型,请使用EventToCommandBehaviour to wire up the view's event with viewmodel's command。触发器只应用于基于视图的操作,如更新样式,控制状态等。

但是如果你仍然希望能够使用触发器,我想你可以通过使用BindingContext和适当的强制转换来实现。

public class SelectedChangedTrigger : TriggerAction<ListView>
{

    protected override void Invoke(ListView sender)
    {
        var selectedItem = sender.SelectedItem as Item;

        var viewModel = selectedItem?.BindingContext as ViewModelType;
        viewModel.PerformAction(); //<-- your view-model's method or property to update/invoke 
    }
}