Бесконечная поверхность UWP inkCanvas такая же, как в приложении Microsoft Whiteboard

Сегодня я видел доску Microsoft, и мне нравится базовый контроль inkCanvas (это мое предположение). и я решил создать элемент управления в приложении UWP, используя inkCanvas, который ведет себя так же, как приложение Microsoft Whiteboard UWP. Доска Microsoft UWP. Моя цель — ниже

  1. Он должен добавить ширину и прокрутку с правой стороны, если inkCanvas имеет какую-либо форму, рисуемую справа. Я попробовал ниже код, который действительно работает, но не прокручивается так, как работает доска Microsoft.
var right = inkCanvas.InkPresenter.StrokeContainer.BoundingRect.Right;
        if (right > inkCanvas.ActualWidth - 400)
        {
            inkCanvas.Width = right + 400;
        }
  1. Аналогично для нижней стороны inkCanvas для увеличения высоты.
var bottom = inkCanvas.InkPresenter.StrokeContainer.BoundingRect.Bottom;
            if (bottom > inkCanvas.ActualHeight - 400)
            {
                grdCan.Height = bottom + 400;
            }

Проблема такая же, автоматическая прокрутка не выполняется.

Также для добавления пробела слева я использовал свойство управления потоком inkCanvas, которое работает нормально, но для добавления пробела в позицию «Верх» у меня нет решения.

любая помощь или направление были бы очень заметны.

Спасибо

Обновление: код

<Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <InkToolbar Grid.Row="0" 
                        Margin="10"
                        x:Name="inkToolbar" 
                        VerticalAlignment="Top"
                        TargetInkCanvas="{x:Bind inkCanvas}">
            </InkToolbar>
            <ScrollViewer Grid.Row="1" 
                          x:Name="scrollViewer" 
                          ZoomMode="Enabled" 
                          MinZoomFactor="1" 
                          MaxZoomFactor="20"
                          VerticalScrollMode="Enabled" 
                          VerticalScrollBarVisibility="Auto" 
                          HorizontalScrollMode="Enabled" 
                          HorizontalScrollBarVisibility="Auto">
                <Grid Height="{Binding ElementName=scrollViewer, Path=ViewportHeight}"
                            Width="{Binding ElementName=scrollViewer, Path=ViewportWidth}">
                    <Canvas x:Name="recognitionCanvas"/>
                    <InkCanvas x:Name="inkCanvas"/>
                </Grid>
            </ScrollViewer>
        </Grid>

person Ganesh Prakash Mahajan    schedule 12.04.2018    source источник
comment
Помещается ли inkCanvas в ScrollViewer?   -  person Nico Zhu - MSFT    schedule 13.04.2018
comment
@NicoZhu-MSFT Да!   -  person Ganesh Prakash Mahajan    schedule 13.04.2018
comment
Показать больше кода xaml или простой пример.   -  person Nico Zhu - MSFT    schedule 13.04.2018
comment
добавил мой фактический код. :)   -  person Ganesh Prakash Mahajan    schedule 13.04.2018
comment
Вы хотите реализовать прокрутку с помощью мыши в ScrollViewer?   -  person Nico Zhu - MSFT    schedule 13.04.2018
comment
Возможно - да! На самом деле я хочу воспроизвести поведение поверхности Microsoft Whiteboard, на которой мы можем рисовать. Если у вас есть возможность установить, пожалуйста, установите его. Так что я не уверен, что мой подход правильный или нет.   -  person Ganesh Prakash Mahajan    schedule 13.04.2018
comment
Я обнаружил, что вы реализовали частичную функцию, такую ​​как расширение области inkCanvas, но она не может прокручиваться с помощью перетаскивания музой, верно?   -  person Nico Zhu - MSFT    schedule 13.04.2018
comment
Вы обнаружили, что на Microsoft Whiteboard есть кнопка привязки Finger?   -  person Nico Zhu - MSFT    schedule 13.04.2018
comment
Да! У меня есть на панели инструментов. Я добавил пользовательскую кнопку, где я устанавливаю тип устройства ввода, как показано ниже - if (touchEnableDisable.IsChecked == false) { inkCanvas.InkPresenter.InputDeviceTypes |= CoreInputDeviceTypes.Mouse; } else { inkCanvas.InkPresenter.InputDeviceTypes &= ~CoreInputDeviceTypes.Mouse; }   -  person Ganesh Prakash Mahajan    schedule 13.04.2018
comment
Обратитесь к этому делу.   -  person Nico Zhu - MSFT    schedule 13.04.2018
comment
Давайте продолжим это обсуждение в чате.   -  person Ganesh Prakash Mahajan    schedule 13.04.2018