Мы пишем приложение для планшетных ПК с Windows. Я создал пользовательский элемент управления, который использует SurfaceScrollViewer
для визуализации вертикального и прокручиваемого списка справа от окна. Элемент управления использует Adorner, чтобы добавить себя в слой adorner окна, чтобы его можно было визуализировать поверх содержимого окна.
Это работает очень хорошо, но средство просмотра поверхностной прокрутки будет прокручивать только колесо мыши или полосу прокрутки. Я хотел бы иметь возможность скрыть полосу прокрутки и полагаться на пользователя, перетаскивающего список на ощупь, но это отказывается работать. Мы использовали элемент управления SurfaceScrollViewer
в другом месте в этом проекте, и это работало нормально, поэтому я предполагаю, что эта проблема связана либо с тем, как был создан элемент управления, либо с тем, что он находится в AdornerLayer? Какое-то отношение к регистрации касания в Surface? Странно то, что SurfaceButton
элементы управления в списке работают нормально.
Любая помощь или совет будут наиболее ценными. Это в основном пользовательский элемент управления. Я удалил несколько связывающих фрагментов, чтобы уменьшить размер, и добавил окружающие элементы Window / AdornerLayer / Adorner, чтобы поместить его в контекст.
РЕДАКТИРОВАТЬ - На самом деле добавитель добавляется в слой-указатель сетки, который является дочерним элементом окна. Я обновил XAML ниже.
<Window x:Name="Main">
<Grid>
<AdornerDecorator>
<!-- Adorner layer added to Window in code-behind -->
<AdornerLayer>
<Adorner>
<!-- Custom Control Starts Here -->
<Grid x:Name="root" Visibility="Collapsed" Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=Window}}" Height="{Binding ActualHeight, RelativeSource={RelativeSource AncestorType=Window}}">
<Controls:SurfaceButton x:Name="btnCloser" Opacity="0" Background="White"/>
<Grid x:Name="menu" Width="400" HorizontalAlignment="Right" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="20"/>
<RowDefinition />
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<Border Opacity="0.75" BorderThickness="0" Background="Black" Grid.RowSpan="5" />
<TextBlock Text="{TemplateBinding Title}" FontSize="24" Grid.Row="1" Foreground="White" HorizontalAlignment="Center" Margin="10"/>
<Controls:SurfaceScrollViewer Grid.Row="3" Margin="5" Elasticity="0.0, 0.5" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<ItemsControl x:Name="items" Background="Transparent" ItemsSource="{TemplateBinding MenuItems}">
<ItemsControl.Style>
<Style>
<Setter Property="ItemsControl.ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemsControl.ItemTemplate">
<Setter.Value>
<DataTemplate>
<Controls:MyButton HorizontalContentAlignment="Center" Margin="3" Content="(Bound Stuff)" Background="(Bound Stuff)"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</ItemsControl.Style>
</ItemsControl>
</Controls:SurfaceScrollViewer>
</Grid>
</Grid>
</Adorner>
</AdornerLayer>
</AdornerDecorator>
</Grid>
</Window>