c# - UWP:不要缩放滚动查看器内媒体播放器元素的媒体传输控件
问题描述
我想为媒体播放器元素(UWP C#)添加缩放功能。我将 MediaPlayerElement 放置在滚动查看器中,并且缩放功能正在工作。但内置的媒体传输传输控件也正在缩放和滚动。我希望修复媒体传输控件。我尝试为传输控制设置边距和高度和宽度属性。但它们似乎不起作用。如何避免传输控制栏的缩放和滚动
XAML:
<ScrollViewer
Name="ScrollViewerMain"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden"
MinZoomFactor="1"
ZoomMode="Enabled"
HorizontalAlignment="Center" Height="314" Margin="427,186,0,0"
VerticalAlignment="Center" Width="730" HorizontalScrollMode="Auto"
VerticalScrollMode="Auto" ManipulationMode="System"
HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
<MediaPlayerElement x:Name="mpe" Stretch="Uniform"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
AreTransportControlsEnabled="True"
MaxWidth="{Binding Path=ViewportWidth, ElementName=ScrollViewerMain}"
MaxHeight="{Binding Path=ViewportHeight, ElementName=ScrollViewerMain}"
/>
</ScrollViewer>
解决方案
ScrollViewer
的缩放是一种整体行为,它的缩放相当于你看物体的距离。
从远处看,物体看起来很小,但物体本身的大小是恒定的。
当你使用ScrollViewer
缩放时,它不可避免地会改变整体。
因此,如果您打算手动放大MediaPlayerElement
,有两种选择:
PointerWheelChanged
通过orManipulationDelta
事件获取用户操作的增量,通过增量改变width
/height
的MediaPlayerElement
。直接改变控件大小时,图标
MediaTransportControls
会保持原来的大小。关于手势,本文档可能会有所帮助。
- 不要显示自己,自己重写一个传输控件,独立于
MediaTransportControls
,并覆盖在上面,像这样:MediaPlayerElement
ScrollViewer
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden"
MinZoomFactor="1"
ZoomMode="Enabled">
<MediaPlayerElement Stretch="Uniform"
AreTransportControlsEnabled="False"
/>
</ScrollViewer>
<MyTransportControls VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
/>
</Grid>
这样,当ScrollViewer
放大时,只会影响MediaPlayerElement
,不会影响TransportControls
。
更新
通过与工程师的沟通,我们得出一个结论,触摸板发送的Pointer
是事件而不是Manipulation
事件。您可以使用事件处理来自触摸板的捏合输入PointerWheelChanged
。
此致。
推荐阅读
- c# - 相机在更新位置后不断缓慢抖动
- r - r 软件包安装正确,但“没有名为‘DiabetesTxPath-master’的软件包”错误
- go - 当目录不同时,包路径如何工作?
- java - ENUM 正则表达式不区分大小写
- wagtail - Wagtail 的 InlinePanel 是否与非页面模型兼容?
- php - 页面加载时如何默认加载任何活动?
- php - 将 sql.zip 文件导入 phpmyadmin 时出现内存大小错误
- javascript - JavaScript - Onclick 导航箭头功能问题
- google-api - gspread 的构建轮子失败
- c++ - 从三元运算符返回 lambda