0
私は、2つの列にまたがる境界線のためにデータバインドが遅いという問題がありました。最初の列にのみ境界線が存在するように境界線を変更すると、データグリッドデータバインディングはほぼ即時に実行されます。以下の私のコードを見てください。WPFグリッド内の枠線のスパンが原因でUIフリーズが発生するのはなぜですか?
グリッドの2番目の列の幅は*に設定されているため、Autoに変更すると正しく動作しますが、2番目のデータグリッドで残りの空き領域を埋める必要があります「)別のビューのタブコントロールの内部でこのユーザーコントロールを使用して、mは
<UserControl>
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
Background="DarkGray">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Left">
<Button x:Name="LoadDataBttn"
Content="Load Data"
Width="125"
Height="Auto"
Margin="1,0"
Command="{Binding LoadDataCommand}"/>
<Button Content="Clear Data"
Width="125"
Height="Auto"
Margin="1,0"/>
<Button x:Name="ExportToXMLBttn"
Content="Export To XML"
Width="125"
Height="Auto"
Margin="1,0"/>
</StackPanel>
</Border>
<Grid Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="1">
<DataGrid x:Name="DataGrid1"
ItemsSource="{Binding ICollectionProperty}"
SelectedItem="{Binding SelectedItem}"
AutoGenerateColumns="True"
CanUserAddRows="False"
CanUserDeleteRows="False"
Background="Transparent">
</DataGrid>
</Grid>
<Grid Grid.Row="1"
Grid.Column="1">
<DataGrid ItemsSource="{Binding ICollectionProperty2}}"
AutoGenerateColumns="True"
CanUserAddRows="False"
CanUserDeleteRows="False"
Background="Transparent"
Style="{StaticResource AzureDataGrid}">
</DataGrid>
</Grid>
</Grid>
コメントありがとうございます。これは私がやったことですが、columnspanとグリッド列の定義*がデータのやりとりを遅くするということは奇妙です。これは、境界線/データグリッドが視覚的要素の外側で永遠に続くようなものでした – ExcelNoobie25