2012-01-03 4 views
1

Я использую Microsoft.Phone.Controls.DatePicker, чтобы выбрать дату в моей форме. Каждый раз, когда я выбираю дату и нажимаю «Ok», вся страница перезагружается. Есть ли способ, который можно использовать, чтобы избежать page_load в моем приложении после выбора даты. Спасибо.Page reload after DatePicker Значение Изменено в WP7

ответ

1

Это то, что работает для меня: В вашем методе OnNavigatedTo, запускать функции, которые вы хотите, только если вы загружаете страницу в первый раз.

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
    base.OnNavigatedTo(e); 

    if (e.NavigationMode == NavigationMode.New) 
    { 
     // Your code here 
    } 
    } 
1

Под капотом вы фактически переходите на страницу так же, как и с помощью NavigationService. Если вы перерисовываете свой пользовательский интерфейс в OnNavigatedTo или Loaded, считайте, что больше не делайте этого, поскольку они вызывается, когда DatePicker закрыт.

http://www.codebadger.com/blog/post/2010/10/05/WP7-Development-Tip-of-the-Day-Page-Startup-Loaded-event-vs-OnNavigatedTo-method.aspx

1

Я был в такой же ситуации на прошлой неделе, и я решил его с помощью простой Boolean, который проверяет, если вы перемещаетесь на страницу в первый раз или на странице DatePicker.

public bool firstEdit { get; set; } 

public TripEditVIew() 
{ 
     firstEdit = true; 
} 

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    if (firstEdit) 
    { 
      // init your page... 

      firstEdit = false; 
    } 
} 

Я создал свойство с именем firstEdit, которое я установил в true в Constructor. Когда вы впервые перейдете к этому представлению, вы активируете функцию OnNavigatedTo, и вы сможете запустить свою страницу с помощью кода инициализации. Не забудьте установить false для свойства boolen в конце кода инициализации.

Когда вы вернетесь с страницы DatePicker, вы также активируете функцию OnNavigatedTo, но на этот раз ничего не будет сделано.