2009-07-31 5 views
0

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

это мой код

 protected void ucWaitPage_FinishedWaiting(PerformAfterWaitDelegate performAfterWait) 
    { 
     performAfterWait.Invoke(); 
     this.SetIndex(); 
    } 

    private void SetIndex() 
    { 
     this.mvwTest.ActiveViewIndex = 0; 
    } 

performAfterWait Делегат указывает на метод SetIndex().

Когда делегат performAfterWait получает вызывается SetIndex() вызывается, но когда SetIndex() возвращает this.mvwTest.ActiveViewIndex возвращается к равен 1.

Однако, когда я называю SetIndex() метод непосредственно он устанавливает этот .mvwTest.ActiveViewIndex = 0, и изменение сохраняется, когда метод возвращается.

+0

Что такое ucWaitPage и что запускает событие FinishedWaiting (при условии, что это событие?) –

ответ

0

Когда performAfterWait делегат получает вызывается SetIndex() вызывается но когда SetIndex() возвращает this.mvwTest.ActiveViewIndex возвращается , чтобы быть равным 1.

Как проверить это , можете ли вы поместить Debug.WriteLine (this.mvwTest.ActiveViewIndex) после функции invoke?

Кстати, что вы хотите использовать для вызова этого метода? Вы просто хотите протестировать делегата. Я не вижу преимущества, если вы все еще звоните из той же темы.

Смежные вопросы