2016-10-06 4 views
0

ToolbarItems.Add(new ToolbarItem("Save", null,() => (BindingContext as AddPersonViewModel).SaveCommand.Execute(null))); так thats мой панель инструментов пункт код. каждый раз я нажимаю Save btn, а затем savecommand.execute!Как иметь 2 команды для одного и того же элемента панели инструментов в xamarin.forms?

Я хочу добавить еще одну команду к этой кнопке. Я бы хотел, чтобы каждый раз я нажимал кнопку «Сохранить» 1-го, чтобы сохранить данные, а затем перейти на страницу anothe! Как я могу это сделать? Благодаря

(Вы можете связывать только одну команду к toolbaritem или какого-либо контроля в XForms, который поддерживает ICommand.)

ответ

0

агрегатные две команды с другой командой

public ICommand SaveAndNavigateCommand { 
get{ 
    return new Command(()=>{ 
     SaveCommand.Execute(null); 
     NavigateCommand.Execute(null); 
    }); 
} 
} 

агрегатные две команды с другой командой

Команда навигации зависит от используемой вами структуры MVVM. Если вы не используете какой-либо, то код будет выглядеть следующим образом:

class AddPersonViewModel{ 

readonly INavigation _navigation; 

public AddPersonViewModel(INavigation navigation){ 
    _navigation = navigation; 
} 

public ICommand NavigateCommand { 
get{ 
    return new Command(()=>{ 
     _navigation.PushAsync(new ContentPage()); //Insert here page that you want navigate to 
    }); 
} 
} 

} 

И затем, при создании модели вида, при условии, что вы создаете ее в классе страницы:

class AddPersonPage: Page{ 
    public AddPersonPage(){ 
     InitializeComponent(); 
     this.BindingContext = new AddPersonViewModel(this.Navigation); 
    } 
} 
+0

спасибо! но как будет выглядеть моя навигационная команда? 'protected async void Navigate() { ??? } ' – BaS

+0

В зависимости от используемой среды MVVM. Какой из них вы используете? – Greensy