Я пытаюсь сделать интеллектуальную прокрутку для холста, который расширяется по размеру. Я хочу, чтобы полосы прокрутки автоматически переходили в центр их диапазона. Поэтому я использую:Как найти фактическую высоту полосы прокрутки внутри элемента управления scrollviewer
eagleViewer.ScrollToVerticalOffset(drawingSpace.Height/2);
eagleViewer.ScrollToHorizontalOffset(drawingSpace.Width/2);
Который работает, но когда скроллбары прокручивать они выходят за пределы половины точки, кажется, это верх выровнен. Поэтому я хотел бы вычесть ширину или ширину полосы прокрутки, чтобы полосы прокрутки были идеально центрированы на холсте.
Я читал в других постах, что я могу сделать это в
SystemParameters.ScrollHeight
или
SystemParameters.ScrollWidth
Но как это работает? У меня есть несколько scrollviewers в окне. Я хочу высоту или ширину полос прокрутки этого конкретного scrollviewer.
Любой другой способ, которым я не осведомлен?
Благодаря
Edit:
Добавление раздела XAML:
<ScrollViewer Name="eagleViewer" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible" Height="Auto" Width="Auto">
<Grid Name="eagleGrid" Background="LightGray">
<Canvas Name="drawingSpace" Background="WhiteSmoke" Width="100" Height="100">
<Canvas.LayoutTransform>
<ScaleTransform CenterX="0" CenterY="0" ScaleX="{Binding ElementName=zoomEagleSlider,Path=Value}" ScaleY="{Binding ElementName=zoomEagleSlider,Path=Value}"/>
</Canvas.LayoutTransform>
</Canvas>
</Grid>
</ScrollViewer>
Это не сработало, при отладке я получаю ноль для scrollableheight. высота «пространства» холста составляет около 3000. – Process
Хм, он работает в моем тестовом приложении. ScrollableHeight - это содержимое ScrollViewer, которое можно перемещать (прокручивать). Допустим, что высота контента составляет 300, а высота ScrollViewer равна 250, ScrollableHeight - 50. Поскольку ваш ScrollableHeight равен нулю, что является индикатором, высота ScrollViewer не меньше, чем высота контента (что не должно быть дело). Можете ли вы опубликовать больше кода XAML, чтобы узнать больше об окружающей среде? – gomi42
отредактировал сообщение с XAML. Canvas 100 в этом коде, но когда программа запускается, он пересчитывается и изменяется на 3000. Изменение высоты холста происходит в строке до того, как я запустил код scrolltoverticaloffset. – Process