Я полагаю, вы используете MVVM Light для Windows Phone. В этом случае вы должны поймать событие на своей странице, а затем запустить команду на ViewModel.
Пример:
код-за страницы
private void Listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ViewModelClass vm = this.DataContext as ViewMoedlClass;
if (vm != null)
{
vm.RefreshCommand.Execute();
}
}
ViewModel
class ViewModelClass
{
public ViewModelClass
{
this.RefreshCommand = new RelayCommand(() =>
{
NavigationService.Navigate(new Uri(NavigationService.Source + "?Refresh=true", UriKind.Relative));
}
}
public RelayCommand RefreshCommand { get; set;}
}
Xaml
<ListBox SelectionChanged="Listbox_SelectionChanged" />
Теоретически вам не обязательно делать это в коде, и вы привязываете свою команду из ViewModel непосредственно к событию SelectionChanged, но это невозможно (прямо) в Windows Phone. Если вы хотите пройти этот маршрут, вы можете взглянуть на EventToCommand. Эта страница более подробно описывает шаги: http://www.geekchamp.com/articles/how-to-bind-a-windows-phone-control-event-to-a-command-using-mvvm-light
Действительно благодарю вас за хороший ответ, но вы знаете способ, не используя MVVM? Благодарим вас за терпение (я ноб) – Oxenarf
В этом случае вы можете сделать это немедленно в обработчике событий: NavigationService.Navigate (новый Uri (NavigationService.Source + "? Refresh = true", UriKind.Relative)); Просто оставьте класс ViewModel и поместите код из команды непосредственно внутри обработчика. Что вы подразумеваете под «Обновление текущей страницы»? – Kenneth
Для обновления я имею в виду именно этот NavigationService.Navigate (новый Uri (NavigationService.Source + "Refresh = true", UriKind.Relative)), , но когда я открываю страницу с помощью LispPicker, у меня есть ошибка System.NullReferenceException это код частной недействительным lpkVoti_SelectionChanged (объект отправителя, SelectionChangedEventArgs е) { NavigationService.Navigate ("? Refresh = истина" новый Uri (NavigationService.Source +, UriKind.Relative)); } – Oxenarf