C#WPF媒体视频播放器不';开始

C#WPF媒体视频播放器不';开始,c#,wpf,video,media-player,C#,Wpf,Video,Media Player,我尝试在WPF上制作媒体播放器 我做了这个: public partial class MyMediaPlayer : Window { public MyMediaPlayer() { InitializeComponent(); // OpenFileDialog dlg = new OpenFileDialog(); dlg.InitialD

我尝试在WPF上制作媒体播放器

我做了这个:

     public partial class MyMediaPlayer : Window
    {
        public MyMediaPlayer()
        {
            InitializeComponent();

            //

            OpenFileDialog dlg = new OpenFileDialog();
            dlg.InitialDirectory = "c:\\"; // init

            dlg.Filter = "All Files (*.*)|*.*"; // filter
            dlg.RestoreDirectory = true;
            // dialog window
          if (dlg.ShowDialog() == true) // checked ? 
            {
                string selectedFileName = dlg.FileName; // path of the media
                MediaPlayer player = new MediaPlayer();
                player.Open(new Uri(selectedFileName, UriKind.Relative));
                VideoDrawing aVideoDrawing = new VideoDrawing();
                aVideoDrawing.Rect = new Rect(0, 0, 100, 100);
                aVideoDrawing.Player = player; // play
                // never play
                player.Play();
            }
        }
    }
以及XAML文件:

    <Window ... >
    <Grid>
        <MediaElement Margin="10,10,10,0 " Source="D:\test.avi"
                              Name="McMediaElement"
                 Width="450" Height="250" LoadedBehavior="Manual" UnloadedBehavior="Stop" Stretch="Fill"
                 />
    </Grid>
</Window>

但是,视频从未启动,窗口保持白色

请帮忙:)

ps:很抱歉我的英语不好

MediaPlayer类():

MediaPlayer不同于MediaElement,因为它不是 控件的用户界面(UI)中直接添加的控件 应用要显示使用MediaPlayer加载的媒体,请使用VideoDrawing 或者必须使用DrawingContext

因此,如果您想使用MediaPlayer,您应该使用
DrawingBrush
class:

...
string selectedFileName = dlg.FileName; 
MediaPlayer player = new MediaPlayer();
player.Open(new Uri(selectedFileName, UriKind.Relative));
VideoDrawing aVideoDrawing = new VideoDrawing();
aVideoDrawing.Rect = new Rect(0, 0, 100, 100);
aVideoDrawing.Player = player;                 
player.Play();
DrawingBrush DBrush = new DrawingBrush(aVideoDrawing);
this.Background = DBrush;
...
在这个解决方案中,您不必在XAML中添加
MediaElement

要仅在XAML中播放媒体,请使用
MediaElement
()

XAML:


@user1785316您是否可以准备示例解决方案并上传到skydrive?
<MediaElement  Name="McMediaElement" Source="D:\test.avi"
         LoadedBehavior="Play" UnloadedBehavior="Stop" Stretch="Fill"
         Margin="10,10,10,0" Width="450" Height="250"
            />
public MainWindow()
{
    InitializeComponent();

    OpenFileDialog dlg = new OpenFileDialog();
    dlg.InitialDirectory = "c:\\"; 

    dlg.Filter = "All Files (*.*)|*.*"; // filter
    dlg.RestoreDirectory = true;    
    if (dlg.ShowDialog() == true) 
    {
        string selectedFileName = dlg.FileName;     
        McMediaElement.Source = new Uri(selectedFileName, UriKind.Absolute);        
    }
}