2014-11-23 4 views
1

При разработке для всех трех мобильных платформ с использованием MvvmLight с формами Xamarin, каков рекомендуемый способ привязки события в представлении к команде в режиме просмотра для событий, которые не поддерживают шаблон команды? Можно ли использовать EventToCommand?EventToCommand с использованием форм Mvvmlight и xamarin

Спасибо!

ответ

1

Не уверен в MVVMLight, но что вы можете сделать, это определить события в интерфейсе (IPageLifeCycleEvents), которые реализованы в соответствующей ViewModel. Внутри представления вы должны установить BindingContext как экземпляр типа IPageLifeCycleEvents и передать события из представления в ViewModel через интерфейс. НАПРИМЕР.

public interface IPageLifeCycleEvents 
{ 
    void OnAppearing(); 
    void OnDisappearing(); 
    void OnLayoutChanged(); 
} 

public class SampleView : ContentPage 
{ 
    public BaseView() { 
     var lifecycleHandler = (IPageLifeCycleEvents) this.BindingContext; 
     base.Appearing += (object sender, EventArgs e) => { 
      lifecycleHandler.OnAppearing(); 
     }; 

     base.Disappearing += (object sender, EventArgs e) => { 
      lifecycleHandler.OnDisappearing(); 
     }; 

     base.LayoutChanged += (object sender, EventArgs e) => { 
      lifecycleHandler.OnLayoutChanged(); 
     }; 
    } 
} 

public class SampleViewModel : IPageLifeCycleEvents 
{ 


    #region IPageLifeCycleEvents Methods 

    public void OnAppearing() 
    { 
     //Do something here 
    } 

    public void OnDisappearing() 
    { 
     //Do something here 
    } 

    public void OnLayoutChanged() 
    { 
     //Do something here 
    } 

    #endregion 
} 

В моих реальных реализациях я использую несколько другую настройку из-за использования моделей IOC и Base.

Удача

Смежные вопросы