Question

I have this problem: After instantiating this Window, open all nested expanders on the right side. (there are 7 of them). The last one contains some elements.(TextBoxes) Try to drag the GridSplitter. Everything is fine, it is working fluently. BUT! As soon as I click into one of the TextBoxes (no matter which one), the dragging becomes insane slow (after mouse drop sometimes 3 seconds +). After clicking into the TextBox these debug messages appear in the output:

'WpfApplication1.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\PresentationCore.resources\3.0.0.0_de_31bf3856ad364e35\PresentationCore.resources.dll'
'WpfApplication1.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\UIAutomationTypes\3.0.0.0__31bf3856ad364e35\UIAutomationTypes.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.

After this, the insane slow dragging takes place. In the debug window when paused and going to the next step are these messages displayed:

'WpfApplication1.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\PresentationCore.resources\3.0.0.0_de_31bf3856ad364e35\PresentationCore.resources.dll'
'WpfApplication1.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\UIAutomationTypes\3.0.0.0__31bf3856ad364e35\UIAutomationTypes.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'MS.Internal.UIElementHelper.InvalidateAutomationAncestors'
Step into: Stepping over non-user code 'System.Windows.UIElement.Measure'
Step into: Stepping over non-user code 'MS.Internal.Helper.MeasureElementWithSingleChild'
Step into: Stepping over non-user code 'System.Windows.Controls.ScrollContentPresenter.MeasureOverride'
Step into: Stepping over non-user code 'System.Windows.FrameworkElement.MeasureCore'
Step into: Stepping over non-user code 'System.Windows.UIElement.Measure'
Step into: Stepping over non-user code 'System.Windows.Controls.Grid.MeasureCellsGroup'
Step into: Stepping over non-user code 'System.Windows.Controls.Grid.MeasureOverride'
Step into: Stepping over non-user code 'System.Windows.FrameworkElement.MeasureCore'
Step into: Stepping over non-user code 'System.Windows.UIElement.Measure'
Step into: Stepping over non-user code 'System.Windows.Controls.ScrollViewer.MeasureOverride'
Step into: Stepping over non-user code 'System.Windows.FrameworkElement.MeasureCore'
Step into: Stepping over non-user code 'System.Windows.UIElement.Measure'
Step into: Stepping over non-user code 'Microsoft.Windows.Themes.ClassicBorderDecorator.MeasureOverride'
Step into: Stepping over non-user code 'System.Windows.FrameworkElement.MeasureCore'
Step into: Stepping over non-user code 'System.Windows.UIElement.Measure'
Step into: Stepping over non-user code 'System.Windows.Controls.Control.MeasureOverride'
Step into: Stepping over non-user code 'System.Windows.Controls.TextBox.MeasureOverride'
Step into: Stepping over non-user code 'System.Windows.FrameworkElement.MeasureCore'
Step into: Stepping over non-user code 'System.Windows.UIElement.Measure'
Step into: Stepping over non-user code 'System.Windows.Controls.WrapPanel.MeasureOverride'

etc...

THIS IS THE CODE: (do not judge the quality, it is just a test, please)

<Window Title="Window 5" x:Class="WpfApplication1.Window5" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <Grid Grid.Row="0" Grid.Column="0">
            <Grid.ColumnDefinitions>                
                <ColumnDefinition Width="*" />                
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />                
            </Grid.RowDefinitions>
            <Expander Grid.Row="0" Grid.Column="0" IsTabStop="False">
                <Expander.Header>
                    <DockPanel>
                        <TextBlock DockPanel.Dock="Left" Text="Search:" Margin="0,0,3,0" VerticalAlignment="Center" />
                        <Button DockPanel.Dock="Right" Margin="3,0,0,0" IsTabStop="False">
                            <Button.Style>
                                <Style TargetType="Button">
                                </Style>
                            </Button.Style>
                        </Button>
                        <Button DockPanel.Dock="Right" Margin="3" Content="_Search..." ToolTip="Tooltip search" IsTabStop="False" />
                        <TextBox DockPanel.Dock="Left" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="3" MinWidth="200" TabIndex="1">
                        </TextBox>
                    </DockPanel>
                </Expander.Header>
                <Expander.Content>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0" Text="Criteria 1:" VerticalAlignment="Center" HorizontalAlignment="Right" />
                        <TextBox Grid.Row="0" Grid.Column="1" />
                        <TextBlock Grid.Row="0" Grid.Column="2" Text="Criteria 1:" VerticalAlignment="Center" HorizontalAlignment="Right" />
                        <TextBox Grid.Row="0" Grid.Column="3" />

                        <TextBlock Grid.Row="1" Grid.Column="0" Text="Criteria 2:" VerticalAlignment="Center" HorizontalAlignment="Right" />
                        <TextBox Grid.Row="1" Grid.Column="1" />
                        <TextBlock Grid.Row="1" Grid.Column="2" Text="Criteria 2:" VerticalAlignment="Center" HorizontalAlignment="Right" />
                        <TextBox Grid.Row="1" Grid.Column="3" />
                    </Grid>
                </Expander.Content>
            </Expander>
        </Grid>

        <Border Grid.Row="1" Grid.Column="0" BorderThickness="1" CornerRadius="4">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>

                <TextBlock Grid.Row="0" Grid.Column="0" Text="Found Matches..." FontStyle="Italic" Panel.ZIndex="100">
                    <TextBlock.Style>
                        <Style TargetType="TextBlock">
                            <Setter Property="Visibility" Value="Visible" />                       
                        </Style>
                    </TextBlock.Style>
                </TextBlock>
                <ListBox Grid.Row="0" Grid.Column="0" TabIndex="2">
                    <ListBox.Style>
                        <Style TargetType="ListBox">
                            <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
                            <Setter Property="BorderThickness" Value="0" />
                            <Setter Property="Margin" Value="0,7,0,7" />
                        </Style>
                    </ListBox.Style>
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="ListBoxItem">
                            <Setter Property="SnapsToDevicePixels" Value="true" />
                            <Setter Property="OverridesDefaultStyle" Value="true" />
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="ListBoxItem">
                                        <Border Margin="4,0,0,0" CornerRadius="6,0,0,6" SnapsToDevicePixels="true" Background="Transparent">
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="*" />
                                                    <ColumnDefinition Width="Auto" />
                                                </Grid.ColumnDefinitions>
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="Auto" />
                                                </Grid.RowDefinitions>
                                                <ContentPresenter Grid.Column="0" />
                                                <Border Padding="10,0,10,0" CornerRadius="4" Grid.Column="1">
                                                    <Path Width="13.2457" Height="12.8151" Stretch="Fill" Data="F1 M 78.1398,324.18L 52.5865,298.626C 51.6892,297.728 50.3385,297.459 49.1678,297.946C 47.9971,298.43 47.2305,299.574 47.2305,300.843L 60.6385,326.398L 47.2305,351.952C 47.2305,353.223 47.9971,354.364 49.1678,354.848C 49.5558,355.011 49.9638,355.09 50.3678,355.09C 51.1838,355.09 51.9852,354.77 52.5865,354.171L 78.1398,328.616C 78.7238,328.032 79.0598,327.224 79.0598,326.398C 79.0598,325.572 78.7238,324.764 78.1398,324.18 Z ">
                                                        <Path.Style>
                                                            <Style TargetType="Path">
                                                                <Setter Property="Fill" Value="#FF000000" />
                                                            </Style>
                                                        </Path.Style>
                                                    </Path>
                                                    <Border.Style>
                                                        <Style TargetType="Border">
                                                            <Setter Property="Visibility" Value="Visible" />
                                                            <Setter Property="Background" Value="Transparent" />
                                                        </Style>
                                                    </Border.Style>
                                                </Border>
                                            </Grid>
                                        </Border>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>

                <GridSplitter Grid.Row="0" Grid.Column="1" Focusable="False" HorizontalAlignment="Right" ResizeDirection="Columns" ResizeBehavior="PreviousAndNext" VerticalAlignment="Stretch">
                    <GridSplitter.Style>
                        <Style TargetType="GridSplitter">
                            <Setter Property="IsEnabled" Value="True" />
                            <Setter Property="Width" Value="10" />
                        </Style>
                    </GridSplitter.Style>
                </GridSplitter>

                <Border Grid.Row="0" Grid.Column="2" BorderThickness="0,2,2,2" CornerRadius="0,4,4,0">
                    <ScrollViewer>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>

                            <Button Grid.Row="0" Grid.Column="0" Content="Edit" HorizontalAlignment="Right" Margin="0,5,5,0" TabIndex="3">
                                <Button.Style>
                                    <Style TargetType="Button">
                                        <Setter Property="Focusable" Value="True" />
                                    </Style>
                                </Button.Style>
                            </Button>

                            <Expander Grid.Row="1" Grid.Column="0">
                                <Expander>
                                    <Expander>
                                        <Expander>
                                            <Expander>
                                                <Expander>
                                                    <Expander>
                                                        <Grid>
                                                            <Grid.ColumnDefinitions>
                                                                <ColumnDefinition Width="*" />                                                               
                                                            </Grid.ColumnDefinitions>
                                                            <Grid.RowDefinitions>
                                                                <RowDefinition Height="Auto" />
                                                                <RowDefinition Height="Auto" />
                                                                <RowDefinition Height="Auto" />                                                                
                                                            </Grid.RowDefinitions>

                                                            <Grid Grid.Row="0" Grid.Column="0" >
                                                                <Grid.ColumnDefinitions>
                                                                    <ColumnDefinition Width="Auto" />
                                                                    <ColumnDefinition Width="*" />
                                                                </Grid.ColumnDefinitions>
                                                                <Grid.RowDefinitions>
                                                                    <RowDefinition Height="Auto" />
                                                                </Grid.RowDefinitions>

                                                                <Path Grid.Row="0" Grid.Column="0" Margin="5" />
                                                                <TextBlock Grid.Row="0" Grid.Column="1" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Left" TextAlignment="Left" />

                                                            </Grid>

                                                            <WrapPanel Grid.Row="2" Grid.Column="0"  Orientation="Horizontal">

                                                                <Grid Margin="5">
                                                                    <Grid.RowDefinitions>
                                                                        <RowDefinition Height="Auto" />
                                                                    </Grid.RowDefinitions>
                                                                    <Grid.ColumnDefinitions>
                                                                        <ColumnDefinition Width="*" />
                                                                        <ColumnDefinition Width="*" />
                                                                    </Grid.ColumnDefinitions>

                                                                </Grid>

                                                                <Grid Margin="5">
                                                                    <Grid.RowDefinitions>
                                                                        <RowDefinition Height="Auto" />
                                                                    </Grid.RowDefinitions>
                                                                    <Grid.ColumnDefinitions>
                                                                        <ColumnDefinition Width="*" />
                                                                        <ColumnDefinition Width="*" />
                                                                    </Grid.ColumnDefinitions>

                                                                </Grid>

                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBox />
                                                                <TextBlock Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="4" Text="Mega Text String Lorem ipsum et asdf asdf adsf asdf asdString Lorem ipsum et asdf asdf adsf asdf asdString Lorem ipsum et asdf asdf adsf asdf asd " FontSize="28" VerticalAlignment="Center" TextWrapping="Wrap" />

                                                            </WrapPanel>
                                                        </Grid>
                                                    </Expander>
                                                </Expander>
                                            </Expander>
                                        </Expander>
                                    </Expander>
                                </Expander>
                            </Expander>

                        </Grid>
                    </ScrollViewer>
                </Border>

            </Grid>
        </Border>
    </Grid>
</Window>
Était-ce utile?

La solution

I copied your code...and the application runs fast and i can slide the GridSplitter fluently and without any problems while focusing one of the TextBox-Elements.

Maybe, you should run the application in non-debugging mode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top