Question

I'd like to know how to refresh the current page with

heNavigationService.Navigate(new Uri(NavigationService.Source + "?Refresh=true", UriKind.Relative));

after i pick an element in the ListPicker.

Was it helpful?

Solution

I suppose you are using MVVM Light for Windows Phone. In that case, you should catch the event in your page and then trigger a command on your ViewModel.

Example:

Code-behind of the page

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" />

In theory you shouldn't have to do this in your code-behind and you would bind your Command from the ViewModel directly to the SelectionChanged-event, but this is not (directly) possible in Windows Phone. If you want to go this route you can take a look at EventToCommand. This page explains the steps in more detail: http://www.geekchamp.com/articles/how-to-bind-a-windows-phone-control-event-to-a-command-using-mvvm-light

OTHER TIPS

set your autopostback to true, sample:

  <asp:DropDownList  OnSelectedIndexChanged="dropDown_indexChange" ID="DropDownList1" runat="server" AutoPostBack="True">
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top