все.Я использую WPF и пытаюсь заполнить сетку данных асинхронно, чтобы он не блокировал пользовательский интерфейс.Я загружаю данные из БД асинхронным способом, но если у меня много записей, пользовательский интерфейс блокируется, пока он не завершит заполнение таблицы данных.Я перепробовал почти все, и ничего не работает.
это мой код xaml:
<DataGrid x:Name="dgOrgAtts" HorizontalAlignment="Left" Height="400" Margin="195,172,0,0" VerticalAlignment="Top" Width="419" RenderTransformOrigin="0.051,-0.272" CanUserReorderColumns="False" CanUserResizeRows="False" IsEnabled="False" AutoGenerateColumns="False" EnableColumnVirtualization="False" EnableRowVirtualization="False" CanUserSortColumns="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Mode=OneWay}" CanUserResize="False" Width="30" >
<DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate>
<CheckBox Checked="all_Checked" Unchecked="all_Unchecked" HorizontalAlignment="Center"/>
</DataTemplate>
</DataGridCheckBoxColumn.HeaderTemplate>
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</DataGridCheckBoxColumn.ElementStyle>
<DataGridCheckBoxColumn.CellStyle>
<Style>
<EventSetter Handler="OrgAtt_Checked" Event="ToggleButton.Checked"/>
<EventSetter Handler="OrgAtt_Unchecked" Event="ToggleButton.Unchecked"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
<DataGridTextColumn Binding="{Binding AttName, Mode=OneWay, IsAsync=True}" ClipboardContentBinding="{x:Null}" Header="סוג קבוצת שיוך" CanUserSort="False" CanUserReorder="False" Width="Auto"/>
<DataGridTextColumn Binding="{Binding AttText, Mode=OneWay, IsAsync=True}" ClipboardContentBinding="{x:Null}" Header="שם קבוצת שיוך" CanUserSort="False" CanUserReorder="False" Width="Auto"/>
<DataGridTextColumn Binding="{Binding OrgAttId, Mode=OneWay, IsAsync=True}" ClipboardContentBinding="{x:Null}" Header="מספר" Width="*"/>
</DataGrid.Columns>
</DataGrid>
И вот как я связываю список с сеткой данных:
Binding binding = new Binding();
binding.Source = orgAtt;
binding.IsAsync = true;
dgOrgAtts.SetBinding(DataGrid.ItemsSourceProperty, binding);
работает, но блокирует пользовательский интерфейс.Я хотел бы получить вашу помощь.