2012-03-29 2 views
0

У меня есть эта проблема: После создания этого окна откройте все вложенные расширители с правой стороны. (их 7). Последний содержит некоторые элементы. (TextBoxes) Попробуйте перетащить GridSplitter. Все в порядке, оно работает свободно. НО! Как только я нажимаю на один из текстовых полей (независимо от того, какой), перетаскивание становится безумным медленным (после того, как мышь иногда падает 3 секунды +). После нажатия на TextBox эти отладочные сообщения появляются на выходе:GridSplitter перемещается очень медленно

После этого безумного медленно увлекая происходит. В окне отладки во время паузы и перехода к следующему шагу отображаются эти сообщения:

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

и т.д ...

ЭТО КОД: (не судите качество, это просто тест, пожалуйста)

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

ответ

1

Я скопировал свой код ... и приложение работает быстро, и я могу сдвинуть GridSplitter свободно и без каких-либо проблем при фокусировке один из TextBox -элементов.

Возможно, вы должны запустить приложение в режиме без отладки.

+0

Ну, я только что попробовал все возможные конфигурации, x86, x64 и Any CPU в режиме отладки/выпуска. Не изменилось. С каждым элементом управления, добавленным в блок, где находятся все те TextBox, он медленнее (с 3 вложенными scrollviewers ~ 25 секунд каждого перетаскивания) –

+0

Я пробовал его на других машинах с теми же ОС и .NET-версиями/патчами, которые были установлены, и он действительно работает свободно ! Что, черт возьми, с моей установкой .NET (все машины были восстановлены с одного и того же изображения) –

+0

хорошо .. я не могу переустановить установку. Это ключевой компонент победы 7, по-видимому. –

Смежные вопросы