В то время как mocking является жизнеспособным вариантом, вы можете также рассмотреть возможность тестирования e2e с выделенной учетной записью aws, найти несколько примеров, в том числе DynamodB и шлюз API
Я думаю, что теперь понимаю то, под чем Вы подразумеваете "на вершине" - один способ сделать это состоит в том, чтобы использовать шаблон управления, который заставляет ScrollContentPresenter охватить две строки и столбцы сетки, в то время как ScrollBars находятся в 2-х строках и столбцах. ScrollBars установлены быть полупрозрачными. Содержание теперь потянет под полосами прокрутки!
Стиль, который я попробовал, который работает, следующие:
<Style x:Key="SVStyle" TargetType="{x:Type ScrollViewer}">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ScrollViewer}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ScrollContentPresenter Grid.ColumnSpan="2" Grid.RowSpan="2"/>
<ScrollBar Name="PART_VerticalScrollBar"
HorizontalAlignment="Right"
Opacity="0.5"
Grid.Column="1"
Value="{TemplateBinding VerticalOffset}"
Maximum="{TemplateBinding ScrollableHeight}"
ViewportSize="{TemplateBinding ViewportHeight}"
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
<ScrollBar Name="PART_HorizontalScrollBar"
VerticalAlignment="Bottom"
Orientation="Horizontal"
Opacity="0.5"
Grid.Row="1"
Value="{TemplateBinding HorizontalOffset}"
Maximum="{TemplateBinding ScrollableWidth}"
ViewportSize="{TemplateBinding ViewportWidth}"
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Использование в качестве примера:
<ScrollViewer HorizontalScrollBarVisibility="Auto" Style="{StaticResource SVStyle}" >
<StackPanel>
<Button Height="100" Width="800" >Hello World</Button>
<Button Height="100" Width="800" >Hello World</Button>
<Button Height="100" Width="800" >Hello World</Button>
<Button Height="100" Width="800" >Hello World</Button>
<Button Height="100" Width="800" >Hello World</Button>
<Button Height="100" Width="800" >World World</Button>
<Button Height="100" Width="800" >Hello World</Button>
<Button Height="100" Width="800" >Hello World</Button>
</StackPanel>
</ScrollViewer>
Результат вроде этого:
Это было бы просто, изменяют это так, чтобы ScrollBars были первоначально очень прозрачны (скажите, Непрозрачность = 0.2), и сделайте, чтобы они стали более непрозрачными, когда мышь вводит ScrollBar. Это было бы хорошим эффектом и сохранит ScrollBars путем, пока они не необходимы.
Править:
Я описал это на своем блоге для тех, кто хотел бы немного больше детали.
Идея состоит в том, что ScrollViewer является декоратором для вещи, которую он прокручивает и отсекает. Прокручиваемая вещь полностью не знает о прокрутке. Это просто и изящно - почему это не достаточно в Вашем случае?
Однако если ScrollViewer не делает то, что Вы хотите, я предлагаю, чтобы Вы создали средства управления ScrollBar и обработали события, сгенерированные им, переместив содержание, что Вы хотите прокрутить в конечном счете обработчики. Можно даже смочь сделать некоторую необычную привязку данных, чтобы не писать обработчики событий. Я не уверен, как Вы собираетесь отсечь содержание правильно, но это - новая куча проблем.
При необходимости к расположению в одном управлении сверху другого используйте управление холстом.
Я не уверен, хотите ли Вы поместить, полоса прокрутки scrollviewer сверху содержания - раз так отвечают 1, если Вы хотите целый scrollViewer ontop содержания, см. ответ 2.
1) Можно изменить визуальное представление чего-либо в WPF путем применения шаблона. Прием в этом случае должен найти то, что существующее представление ScrollViewer, и затем по существу повторно реализуйте весь одинаковый зрительный ряд просто changeing позиция ScrollBar как требуется. Существует несколько способов найти весь зрительный ряд для управления - самое легкое от Образцов MSDN WPF - и достаточно приятно пример ScrollViewer, обеспеченный шоу Microsoft, как сменить положение полосы прокрутки.
Microsoft BTW склонна загружать их примеры большим количеством дополнительных Xaml, в которых Вы действительно не нуждаетесь - игра (безжалостно отключенный код) с шаблоном, пока она не делает, что Вы хотите и не больше.
2) Мой подход к размещению ontop представления прокрутки содержания, должен был бы использовать два scrollviewers, помещенные друг на друге. 'Вершина' является маленькой, полупрозрачной (непрозрачность = 50) и прокрутка дескрипторов, нижняя часть является более крупной и имеет документ. Соедините событие прокрутки проводом от лучшего ScrollViewer так, чтобы это также прокрутило нижнюю часть один.