Я пытаюсь обновить текущую страницу, но не могу это сделать. В основном я использовал пользовательский контроль и наследовал другой пользовательский элемент управления. Событие нажатия кнопки работает правильно. Но не обновляйте страницу.
Page = (Application.Current.RootVisual as Frame).Content as Page;
string u = Convert.ToString(Page.NavigationService.CurrentSource);
Page.NavigationService.Navigate(new Uri(u, UriKind.Relative));
Проблема здесь в том, что вы не можете использовать навигацию в UserControl
, она должна быть на Page
. Таким образом, в вашем пользовательском управлении создайте обработчик событий, как это.
public event EventHandler Refresh;
Теперь на вашей странице сделайте свою Handle
как..
MyUserControl.Refresh += UserControl_Refresh;
void MyUserControl_Refresh(object sender, EventArgs e)
{
//refresh logic here
}
Затем в вашем UserControl
вызывается это Event
когда это требуется в качестве
Refresh.Invoke(this, null);
И это сработает.
Когда вы хотите перейти на страницу из UserControl, вам нужно сделать это так:
(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/ProjectName;component/Pages/SignatureCapturePage.xaml", UriKind.Relative));
И когда вы хотите перейти к новому экземпляру страницы (в которой вы проживаете), вам нужно добавить новый GUID
(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/ProjectName;component/Pages/SignatureCapturePage.xaml?id="+Guid.NewGuid().ToString(), UriKind.Relative));
Но ваша конечная цель - обновить страницу и не перейти на новую страницу, чтобы вы могли либо инициировать событие на странице с вашего UserControl, либо перейти к DataBinding.
DataBinding - лучший подход, и вы можете получать уведомление с помощью INotifyPropertyChanged, когда некоторые изменения происходят с Usercontrol. См. DataBinding для Windows Phone 8
Вы пытались удалить BackStack
?
NavigationService.RemoveBackEntry();
Как перезагрузить страницу приложения Windows Phone без создания новой копии в памяти?
просто введите нужную вам страницу на любое событие, которое вы хотите, чтобы оно обновило страницу.
NavigationService.Navigate(new Uri("/pagetorefresh.xaml", UriKind.Relative));