我正在使用Visual Studio 2012构建一个WPF项目,我发现相对路径存在问题。
具体来说,我希望在选中ToggleButton时播放声音。
这是我按钮的代码:
<ToggleButton Name="Circles" Margin="88,104,86,172" Background="#FFFFD0CD" Foreground="Black" Checked="Circles_Checked">Circles</ToggleButton>
如果我这样写:
private void Circles_Checked(object sender, System.Windows.RoutedEventArgs e)
{
MediaPlayer mplayer = new MediaPlayer();
mplayer.Open(new Uri("C:\\Users\\user1\\Documents\\Visual Studio 2012\\Projects\\RehabilitationGUIProject\\RehabilitationGUIProject\\circles.mp3", UriKind.Relative));
mplayer.Play();
}
一切都如预期的那样有效。但我希望这些代码能够在其他机器上运行,而不仅仅是我的机器。如果我必须将声音移动到另一个位置呢?我想使用相对路径并在项目文件夹中移动每个声音。
所以我在我的根项目中创建了一个名为Sound的新文件夹,结构如下:
RehabilitationGuiProject
\属性
\参考
\ BIN
\对象
\声音
\ circles.mp3
...其他文件.xaml
所以我在上面编写了相同的代码行,改变了这一行:
mplayer.Open(new Uri(@"/Sounds/circles.mp3", UriKind.Relative));
但没有播放声音。从项目文件夹播放声音的正确相对路径是什么?
答案 0 :(得分:4)
路径必须相对于执行应用程序的文件夹。
mplayer.Open(new Uri(@"../../Sounds/circles.mp3", UriKind.Relative));
(假设你的exe是从Bin / Debug文件夹运行的)