I приложения WPF У меня есть следующие события-обработчик кнопки щелкните в файл кода окна:Странное поведение кода в WPF (рендеринга выпуск)
private void AddNewRecBtn_Click(object sender, RoutedEventArgs e)
{
DimRec.Visibility = System.Windows.Visibility.Visible;
PrBarLayer.Visibility = System.Windows.Visibility.Visible;
try
{
WriteAndClose();
}
catch (Exception)
{
throw;
}
}
Эти строки кода :
DimRec.Visibility = System.Windows.Visibility.Visible;
PrBarLayer.Visibility = System.Windows.Visibility.Visible;
просто сделать видимый прямоугольник DimRec
с Opacity="0.5" Fill="Gray"
затемнения окна во время просмотра ProgressBar и StackPanel PrBarLayer
с самим ProgressBar. WriteAndClose();
метод выполняет много вещей, включая запрос LINQ to SQL и большую визуализацию на экране, что занимает несколько секунд (пока происходит, на экране ничего не происходит, все кажется замороженным).
В течение этого периода в несколько секунд я хотел бы показать пользователю омраченное управление окном и индикатор выполнения, но проблема в том, что эти слои, которые делают код видимым, на самом деле не отображаются. Если я удалю WriteAndClose();
метод из этого обработчика, все в порядке - становится видимым ProgressBar.
Похоже, что WPF не визуализирует визуальные элементы управления одновременно, а затем ресурсы переходят к следующему методу WriteAndClose
, все зависает, а затем экран получается рендером, когда все уже сделано, а видимость слоя индикатора выполнения выполнена скомпенсирована.
Что может быть решением? Как я мог сделать шоу ProgressBar первым, и только тогда останутся тяжелые вещи?