Как прокрутить ScrollViewer в определенном месте RadioButton - PullRequest
0 голосов
/ 20 мая 2018

xaml

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<ScrollViewer x:Name="ScrollViewer1" CanContentScroll="True" SnapsToDevicePixels="True" VerticalScrollBarVisibility="Visible">
    <DockPanel LastChildFill="False">
        <RadioButton x:Name="RadioButton1" Content="RadioButton1" GroupName="MyGroup" Width="100" DockPanel.Dock="Top" Margin="30"/>
        <RadioButton x:Name="RadioButton2" Content="RadioButton2" GroupName="MyGroup" Width="100" DockPanel.Dock="Top" Margin="30"/>
        <RadioButton x:Name="RadioButton3" Content="RadioButton3" GroupName="MyGroup" Width="100" DockPanel.Dock="Top" Margin="30"/>
        <RadioButton x:Name="RadioButton4" Content="RadioButton4" GroupName="MyGroup" Width="100" DockPanel.Dock="Top" Margin="30"/>
        <RadioButton x:Name="RadioButton5" Content="RadioButton5" GroupName="MyGroup" Width="100" DockPanel.Dock="Top" Margin="30"/>
        <RadioButton x:Name="RadioButton6" Content="RadioButton6" GroupName="MyGroup" Width="100" DockPanel.Dock="Top" Margin="30"/>
        <RadioButton x:Name="RadioButton7" Content="RadioButton7" GroupName="MyGroup" Width="100" DockPanel.Dock="Top" Margin="30"/>
        <RadioButton x:Name="RadioButton8" Content="RadioButton8" GroupName="MyGroup" Width="100" DockPanel.Dock="Top" Margin="30"/>
    </DockPanel>
</ScrollViewer>
</Window>

vb.net

Class MainWindow 
Private Sub RadioButton5_Checked(sender As Object, e As RoutedEventArgs) Handles RadioButton5.Checked
    ScrollViewer1.ScrollToVerticalOffset(0)
End Sub
End Class

Если вы нажмете RadioButton5, вы увидите, что ScrollViewer1прокручивается в нулевую позицию.Итак, приведенные выше коды работают отлично.

Я хочу, чтобы ScrollViewer1 прокрутил до позиции RadioButton3, когда Пользователь нажимает RadioButton8.

Ответ от Роберт Леви выглядит хорошо, но я не понимаю, как реализовать ответ Роберт Леви здесь: Как прокрутить содержимое WPF ScrollViewer в определенное место

1 Ответ

0 голосов
/ 20 мая 2018

Если вы хотите прокрутить кнопку, чтобы быть под мышью: вы можете получить положение кнопки относительно мыши с помощью

Point position = Mouse.GetPosition(RadioButton5);

, а затем выделите кнопку с помощью

ScrollViewer1.ScrollToVerticalOffset(ScrollViewer1.VerticalOffset - position.Y);

Если я вас правильно понял, вы прокручиваете кнопку, чтобы оказаться в верхней части списка.Вы можете достичь этого

Point point = ScrollViewer1.TranslatePoint(new Point(), RadioButton5);
ScrollViewer1.ScrollToVerticalOffset(ScrollViewer1.VerticalOffset - point.Y);

Надеюсь, именно это вы и пытались сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...