2016-02-18 3 views
0

Это мое первое сообщение, но я ищу ответ на две недели на каждом форуме. Что я хочу сделать, это нажать кнопку и обновить изображение 3 раза с ожиданием 3 секунд, например. Я использую шаблон MVVM.UWP Обновление ui CoreApplication ... runasync

На мой взгляд.

   <TextBlock Margin="0,10,0,0" 
        Text="{Binding MyImageSource}" /> 
       <Image Source="{Binding MyImageSource}" 
         Width="40" 
         Height="40"> 
       </Image> 
private async void bt_Click(object sender, RoutedEventArgs e) 
    { 
     await MyViewmodel.SetCardsBackGround(); 
    } 

Вот в моем ViewModel я жду установить мою собственность я жду и так далее. Есть одна проблема с текстом на моем экране, но изображение нет. Я не понимаю свои привязки для текста, но не для изображения.

public async Task SetCardsBackGround() 
    { 
     System.Threading.Tasks.Task.Delay(<3 seconds>).Wait(); 
     await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
     () => 
     { 
      MyImageSource = "ms-appx:///Assets/StoreLogo.png"; 
     }); 
     System.Threading.Tasks.Task.Delay(<3 seconds>).Wait(); 
     await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
     () => 
     { 
      MyImageSource = "ms-appx:///Assets/StoreLogo1.png"; 
     }); 
     System.Threading.Tasks.Task.Delay(<3 seconds>).Wait(); 
     await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
     () => 
     { 
      MyImageSource = "ms-appx:///Assets/StoreLogo2.png"; 
     }); 
    }); 

Так мой результат:
Подождите 3 секунды:
TextBlock = мс-appx: ///Assets/StoreLogo.png
Изображение не появляется NOK
Подождите 3 секунды:
TextBlock = мс-appx: ///Assets/StoreLogo1.png
изображение не появляется NOK
подождите 3 секунды:
TextBlock = Ms-appx: ///Assets/StoreLogo2.png
изображение появится OK

И я действительно не уверен, что я делаю это по правильному пути. Вы будете очень благодарны.

+0

Почему вы звоните '' Wait' на TaskDelay' вместо 'await'ing это? –

+0

И почему вы ссылаетесь на 'Диспетчер'? Разве не вызов «SetCardsBackGround» из потока пользовательского интерфейса? –

+0

Я звонил .wait(), потому что думал, что это такая же функция, как и ждать, так что это не так. И да, я обращался к своему диспетчеру ... потому что изображения не обновляются. Но спасибо за ваше решение, это работает! –

ответ

0

Попробуйте это:

public async Task SetCardsBackGround() 
{ 
    await System.Threading.Tasks.Task.Delay(<3 seconds>); 
    MyImageSource = "ms-appx:///Assets/StoreLogo.png"; 
    await System.Threading.Tasks.Task.Delay(<3 seconds>); 
    MyImageSource = "ms-appx:///Assets/StoreLogo1.png"; 
    await System.Threading.Tasks.Task.Delay(<3 seconds>); 
    MyImageSource = "ms-appx:///Assets/StoreLogo2.png"; 
}); 
Смежные вопросы