如何访问由 MediaTransportControls 中的自定义按钮引发的事件?
How to get access to an event raised by a custom button in MediaTransportControls?
我有一个 UWP 桌面应用程序,它有一个带有自定义 MediaTransportControls 的 MediaPlayerElement。我在 MediaTransportControls 中创建了两个新按钮来增加和减少 MediaPlayerElement 的 PlaybackRate。我已经创建了在单击按钮时引发事件的过程,但我不知道如何在包含 MediaPlayerElement 的应用程序主页上访问这些事件。我怎么做?欢迎任何帮助。
XAML
<MediaPlayerElement x:Name="mediaPlayerElement"
AutoPlay="False"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="0,0,0,100"
AreTransportControlsEnabled="True" >
<MediaPlayerElement.TransportControls>
<local:CustomMediaTransportControls x:Name="customMTC"
IsSkipBackwardEnabled="False"
IsSkipBackwardButtonVisible="False"
IsSkipForwardEnabled="False"
IsSkipForwardButtonVisible="False"
IsFastForwardButtonVisible="True"
IsFastForwardEnabled="True"
IsFastRewindButtonVisible="True"
IsFastRewindEnabled="True"
IsFullWindowButtonVisible="False"
IsNextTrackButtonVisible="False"
IsPreviousTrackButtonVisible="False"
IsZoomButtonVisible="False"/>
</MediaPlayerElement.TransportControls>
</MediaPlayerElement>
<!--Custom Buttons-->
<AppBarButton x:Name='CustomPlaybackRateDownButton'
Style='{StaticResource AppBarButtonStyle}'
MediaTransportControlsHelper.DropoutOrder='18' Visibility="Visible">
<AppBarButton.Icon>
<FontIcon FontFamily="Segoe MDL2 Assets" Glyph=""/>
</AppBarButton.Icon>
</AppBarButton>
<AppBarButton x:Name='CustomPlaybackRateUpButton'
Style='{StaticResource AppBarButtonStyle}'
MediaTransportControlsHelper.DropoutOrder='19' Visibility="Visible">
<AppBarButton.Icon>
<FontIcon FontFamily="Segoe MDL2 Assets" Glyph=""/>
</AppBarButton.Icon>
</AppBarButton>
代码隐藏
public sealed class CustomMediaTransportControls : MediaTransportControls
{
public event EventHandler<EventArgs> PlaybackRateDownClicked;
public event EventHandler<EventArgs> PlaybackRateUpClicked;
public CustomMediaTransportControls()
{
this.DefaultStyleKey = typeof(CustomMediaTransportControls);
}
protected override void OnApplyTemplate()
{
// Find the custom button and create an event handler for its Click event.
var downButton = GetTemplateChild("CustomPlaybackRateDownButton") as Button;
downButton.Click += CustomPlaybackRateDownButton_Click;
var upButton = GetTemplateChild("CustomPlaybackRateUpButton") as Button;
upButton.Click += CustomPlaybackRateUpButton_Click;
base.OnApplyTemplate();
}
private void CustomPlaybackRateDownButton_Click(object sender, RoutedEventArgs e)
{
var OnPlaybackRateDownClick = PlaybackRateDownClicked;
if (OnPlaybackRateDownClick != null)
{
OnPlaybackRateDownClick(this, EventArgs.Empty);
}
}
private void CustomPlaybackRateUpButton_Click(object sender, RoutedEventArgs e)
{
var OnPlaybackRateUpClick = PlaybackRateUpClicked;
if (OnPlaybackRateUpClick != null)
{
OnPlaybackRateUpClick(this, EventArgs.Empty);
}
}
}
您已将按钮点击事件重定向到 PlaybackRateDownClicked
和 PlaybackRateUpClicked
,因此您只需在主页中监听 CustomMediaTransportControls 的 PlaybackRate
点击事件。例如。
var smtc = new CustomMediaTransportControls();
smtc.PlaybackRateDownClicked += Smtc_PlaybackRateDownClicked;
private void Smtc_PlaybackRateDownClicked(object sender, EventArgs e)
{
}
更多细节请参考句柄和raise events document。
我有一个 UWP 桌面应用程序,它有一个带有自定义 MediaTransportControls 的 MediaPlayerElement。我在 MediaTransportControls 中创建了两个新按钮来增加和减少 MediaPlayerElement 的 PlaybackRate。我已经创建了在单击按钮时引发事件的过程,但我不知道如何在包含 MediaPlayerElement 的应用程序主页上访问这些事件。我怎么做?欢迎任何帮助。
XAML
<MediaPlayerElement x:Name="mediaPlayerElement"
AutoPlay="False"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="0,0,0,100"
AreTransportControlsEnabled="True" >
<MediaPlayerElement.TransportControls>
<local:CustomMediaTransportControls x:Name="customMTC"
IsSkipBackwardEnabled="False"
IsSkipBackwardButtonVisible="False"
IsSkipForwardEnabled="False"
IsSkipForwardButtonVisible="False"
IsFastForwardButtonVisible="True"
IsFastForwardEnabled="True"
IsFastRewindButtonVisible="True"
IsFastRewindEnabled="True"
IsFullWindowButtonVisible="False"
IsNextTrackButtonVisible="False"
IsPreviousTrackButtonVisible="False"
IsZoomButtonVisible="False"/>
</MediaPlayerElement.TransportControls>
</MediaPlayerElement>
<!--Custom Buttons-->
<AppBarButton x:Name='CustomPlaybackRateDownButton'
Style='{StaticResource AppBarButtonStyle}'
MediaTransportControlsHelper.DropoutOrder='18' Visibility="Visible">
<AppBarButton.Icon>
<FontIcon FontFamily="Segoe MDL2 Assets" Glyph=""/>
</AppBarButton.Icon>
</AppBarButton>
<AppBarButton x:Name='CustomPlaybackRateUpButton'
Style='{StaticResource AppBarButtonStyle}'
MediaTransportControlsHelper.DropoutOrder='19' Visibility="Visible">
<AppBarButton.Icon>
<FontIcon FontFamily="Segoe MDL2 Assets" Glyph=""/>
</AppBarButton.Icon>
</AppBarButton>
代码隐藏
public sealed class CustomMediaTransportControls : MediaTransportControls
{
public event EventHandler<EventArgs> PlaybackRateDownClicked;
public event EventHandler<EventArgs> PlaybackRateUpClicked;
public CustomMediaTransportControls()
{
this.DefaultStyleKey = typeof(CustomMediaTransportControls);
}
protected override void OnApplyTemplate()
{
// Find the custom button and create an event handler for its Click event.
var downButton = GetTemplateChild("CustomPlaybackRateDownButton") as Button;
downButton.Click += CustomPlaybackRateDownButton_Click;
var upButton = GetTemplateChild("CustomPlaybackRateUpButton") as Button;
upButton.Click += CustomPlaybackRateUpButton_Click;
base.OnApplyTemplate();
}
private void CustomPlaybackRateDownButton_Click(object sender, RoutedEventArgs e)
{
var OnPlaybackRateDownClick = PlaybackRateDownClicked;
if (OnPlaybackRateDownClick != null)
{
OnPlaybackRateDownClick(this, EventArgs.Empty);
}
}
private void CustomPlaybackRateUpButton_Click(object sender, RoutedEventArgs e)
{
var OnPlaybackRateUpClick = PlaybackRateUpClicked;
if (OnPlaybackRateUpClick != null)
{
OnPlaybackRateUpClick(this, EventArgs.Empty);
}
}
}
您已将按钮点击事件重定向到 PlaybackRateDownClicked
和 PlaybackRateUpClicked
,因此您只需在主页中监听 CustomMediaTransportControls 的 PlaybackRate
点击事件。例如。
var smtc = new CustomMediaTransportControls();
smtc.PlaybackRateDownClicked += Smtc_PlaybackRateDownClicked;
private void Smtc_PlaybackRateDownClicked(object sender, EventArgs e)
{
}
更多细节请参考句柄和raise events document。