WPF: Избегайте сброса Canvas Scrollviewer - PullRequest
2 голосов
/ 07 апреля 2011

У меня следующая проблема: когда элемент на холсте выбран (подлежит удалению), просмотрщик прокрутки всегда сбрасывается в 0: это происходит из-за фокуса в примере кода.Если фокус () удален, средство просмотра прокрутки в порядке, но выбранный элемент теперь нельзя стереть!>> 1001 *

Mainwindow.Xaml code:

<Border Grid.Row="1" BorderThickness="1" BorderBrush="Navy" Margin="2" Padding="2" >
                <ScrollViewer Name="Posizione_scrollbar"  HorizontalScrollBarVisibility="Auto" 
                          VerticalScrollBarVisibility="Auto">


Protected Overrides Sub OnPreviewMouseDown(ByVal e As System.Windows.Input.MouseButtonEventArgs)
        MyBase.OnPreviewMouseDown(e)

        ' usual selection business
        Dim designer As DesignerCanvas = TryCast(VisualTreeHelper.GetParent(Me), DesignerCanvas)
        If designer IsNot Nothing Then
            If (Keyboard.Modifiers And (ModifierKeys.Shift Or ModifierKeys.Control)) <> ModifierKeys.None Then
                If Me.IsSelected Then
                    designer.SelectionService.RemoveFromSelection(Me)
                Else
                    designer.SelectionService.AddToSelection(Me)
                End If
            ElseIf Not Me.IsSelected Then
                If MainViewModel.Instance.ActiveDiagram.STMonitor = False Then
                    designer.SelectionService.SelectItem(Me)
                End If
            End If

            'Here is the problem: the canvas scrollbar is resetted to 0!
            Me.Focus()

        End If

        'True per avere la gestione col tasto sinistro del mouse
        e.Handled = True

    End Sub

1 Ответ

2 голосов
/ 20 апреля 2011

Вы должны попытаться обработать событие RequestBringIntoView, возникшее, когда элемент получает фокус, и предотвратить передачу этого события в ScrollViewer.Одно хорошее место, чтобы пометить эти события как обработанные - на уровне холста.

...