← Каталог
Особенности разработки десктопных приложений — 1. Асинхронная операция с обновлением UI (C# / WPF, MVVM)
Фрагмент из «Особенности разработки десктопных приложений»: 1. Асинхронная операция с обновлением UI (C# / WPF, MVVM).
<!-- MainWindow.xaml -->
<Window x:Class="AsyncDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="Асинхронная загрузка" Height="350" Width="500">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button Content="Загрузить данные"
Command="{Binding LoadDataCommand}"
IsEnabled="{Binding IsLoading, Converter={StaticResource InverseBooleanConverter}}"
Margin="0,0,0,10"/>
<ProgressBar Grid.Row="1"
IsIndeterminate="True"
Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisibilityConverter}}"
Height="4" Margin="0,5"/>
<ListBox Grid.Row="1"
ItemsSource="{Binding Items}"
Visibility="{Binding IsLoading, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Margin="0,10,0,0"/>
</Grid>
</Window> <!-- MainWindow.xaml -->
<Window x:Class="AsyncDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="Асинхронная загрузка" Height="350" Width="500">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button Content="Загрузить данные"
Command="{Binding LoadDataCommand}"
IsEnabled="{Binding IsLoading, Converter={StaticResource InverseBooleanConverter}}"
Margin="0,0,0,10"/>
<ProgressBar Grid.Row="1"
IsIndeterminate="True"
Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisibilityConverter}}"
Height="4" Margin="0,5"/>
<ListBox Grid.Row="1"
ItemsSource="{Binding Items}"
Visibility="{Binding IsLoading, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Margin="0,10,0,0"/>
</Grid>
</Window>