我想确定我的播放器上的视频is_playing。但是怎么做呢?请帮帮我。我正在使用c#>w_pf .net Framework4.5.1,我想创建一个像这样的视频事件。
我想像那个玩家一样控制播放/暂停按钮。如何在视频播放时控制播放/暂停按钮图像的变化。请帮帮我
发布于 2016-08-01 22:09:48
我有两个按钮,并将这些按钮的可见性绑定到一个布尔值,当您单击按钮时,该布尔值可以控制这些按钮。
基本上,您必须自己跟踪播放暂停状态。媒体元素不会为你做到这一点。
在主窗口xaml中添加以下内容:
// Two converters used with the visibility binding
<Window.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
    <local:InvertableBooleanToVisibilityConverter x:Key="InvertableBooleanToVisibilityConverter"/>
</Window.Resources> 
// Need to make sure we add loaded behaviour or it will crash app
<MediaElement Name="mePlayer" 
                  LoadedBehavior="Manual" 
                  Source="C:\Users\SamG\Downloads\ZW_20160102_064536A.avi"/>
<Button Content="Play" Name="Play" Click="Play_OnClick" Visibility="{Binding ElementName=mainWindow, Path=IsPaused, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<Button Content="Pause" Name="Pause" Click="Pause_OnClick" Visibility="{Binding ElementName=mainWindow, Path=IsPaused, Converter={StaticResource InvertableBooleanToVisibilityConverter}, ConverterParameter=Inverted}"/>您还必须为此窗口命名,确保将其放入
x:Name="mainWindow"在c#代码中:
public partial class MainWindow : INotifyPropertyChanged
{
    private bool _isPaused;
    public MainWindow()
    {
        InitializeComponent();
        mePlayer.Play();
        IsPaused = true;
    }
    private void Play_OnClick(object sender, RoutedEventArgs e)
    {
        mePlayer.Play();
        IsPaused = false;
    }
    private void Pause_OnClick(object sender, RoutedEventArgs e)
    {
        mePlayer.Pause();
        IsPaused = true;
    }
    public bool IsPaused
    {
        get { return _isPaused; }
        set
        {
            _isPaused = value;
            OnPropertyChanged();
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}然后添加一个名为InvertableBooleanToVisibilityConverter的新类:
[ValueConversion(typeof(bool), typeof(Visibility))]
public class InvertableBooleanToVisibilityConverter : IValueConverter
{
    enum Parameters
    {
        Normal, Inverted
    }
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var boolValue = (bool) value;
        var direction = (Parameters) Enum.Parse(typeof (Parameters), (string) parameter);
        if (direction == Parameters.Inverted)
            return !boolValue ? Visibility.Visible : Visibility.Collapsed;
        return boolValue ? Visibility.Visible : Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }
}复制这段代码,它应该能满足你的需求
https://stackoverflow.com/questions/38694624
复制相似问题