2017-07-09 1 views
0

J'ai eu des problèmes avec la liaison de données lente en raison d'une bordure qui s'étend sur deux colonnes et je n'arrive pas à comprendre pourquoi. Si je change la bordure pour ne résider que dans la première colonne, la liaison de données de datagrid est presque instantanée. S'il vous plaît voir mon code ci-dessous. Cela a quelque chose à voir avec la largeur de la deuxième colonne de la grille étant fixée à *, parce que quand je la changerai en Auto cela fonctionnera correctement, mais je veux que la seconde grille de données remplisse le reste de l'espace vide (I « utilise ce UserControl l'intérieur d'une autre vue de TabControl)WPF La largeur de la bordure à l'intérieur de la grille provoque le gel de l'interface utilisateur, pourquoi?

<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> 

Répondre

0

J'ai toujours détesté la propriété « span colonne », mais parfois il vous suffit de l'utiliser. À mon avis, vous devez diviser votre contenu en plusieurs grilles, également pour une séparation claire des éléments. Peut-être que la durée de la colonne est le problème ... Je ne sais pas. Essayer.

+1

Merci pour le commentaire. C'est ce que j'ai fini par faire, mais je trouve juste bizarre que la taille des colonnes plus une définition de la grille de * rende l'interaction des données si lente. C'était comme si la frontière/datagrid continuait indéfiniment en dehors de l'élément visuel – ExcelNoobie25