【发布时间】:2016-09-20 12:31:13
【问题描述】:
复制代码:
<Window x:Class="MediaBox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MediaBox"
Title="MainWindow">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<MediaElement LoadedBehavior="Play"
MediaFailed="OnMediaFailed"
Source="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type local:MainWindow}},
Path=FileName}" />
<Button Grid.Row="1"
Click="OnOpenClick"
Content="Open" />
</Grid>
</Window>
public partial class MainWindow : Window
{
public static readonly DependencyProperty FileNameProperty = DependencyProperty.Register(
nameof(FileName),
typeof(string),
typeof(MainWindow),
new PropertyMetadata(default(string)));
public MainWindow()
{
this.InitializeComponent();
}
public string FileName
{
get { return (string)this.GetValue(FileNameProperty); }
set { this.SetValue(FileNameProperty, value); }
}
private void OnOpenClick(object sender, RoutedEventArgs e)
{
var openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == true)
{
this.FileName = openFileDialog.FileName;
}
}
private void OnMediaFailed(object sender, ExceptionRoutedEventArgs e)
{
MessageBox.Show(this, e.ErrorException.Message, "Media failed");
}
}
如果我尝试从网络驱动器的路径中打开带有# 的文件,则会失败:
HRESULT 异常:0xC00D11B1
如果我从路径中删除#,则剪辑播放正常
我做错了什么?
更新: Windows 媒体播放器播放来自网络驱动器的剪辑,路径中带有 #。
【问题讨论】:
-
效果很好。
-
@jstreet 奇怪,代码对我来说是完美的复制品。
-
我会尝试获取完整的异常堆栈跟踪。
标签: c# wpf uri mediaelement