音频资源文件无法从MediaElement播放

时间:2014-06-18 16:35:39

标签: wpf xaml

我有一个MediaElement在故事板中播放(试图播放)一个声音片段。当我使用声音文件的绝对路径(即c:\ file \ location \ alarm.wave)时,它工作正常。但是,如果我使用相对的uri,那就不行了。

我将alarm.wav放在名为Resources的文件夹中,该文件夹位于我的项目根目录中。我已经尝试将alarm.wav Build Action设置为Content,Resource和Embedded Resource。我也在我的Resources.resx中添加了它。我尝试了很多相对的URI,比如/Resources/alarm.wav和Resources / alarm.wav和pack:// application:,,, / Capricorn2; component / Resources / alarm.wav。

这些组合都不起作用......所以我必须遗漏一些明显的东西......任何想法?

<ListBox.ItemTemplate >
    <DataTemplate>
        <DataTemplate.Triggers>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition  Binding="{Binding IsAlarming}" Value="True"/>
                    <Condition Binding="{Binding IsAudioAlarm}" Value="True"/>
                </MultiDataTrigger.Conditions>
                <MultiDataTrigger.EnterActions>
                    <BeginStoryboard x:Name="soundPlayer">
                        <Storyboard>
                            <MediaTimeline Source="/Capricorn2;component/Resources/alarm.wav" Storyboard.TargetName="alarmSound" RepeatBehavior="Forever"/>
                        </Storyboard>
                    </BeginStoryboard>
                </MultiDataTrigger.EnterActions>
                <MultiDataTrigger.ExitActions>
                    <RemoveStoryboard BeginStoryboardName="soundPlayer"/>
                </MultiDataTrigger.ExitActions>
            </MultiDataTrigger>
        </DataTemplate.Triggers>
        <Border >
            <Grid >
                <MediaElement x:Name="alarmSound"/>
            </Grid>
        </Border>
    </DataTemplate>
</ListBox.ItemTemplate>

1 个答案:

答案 0 :(得分:1)

相对URI不会有&#39; /&#39;在它面前。因此,如果您的声音文件的绝对路径是

  

/ProjectName/Resources/alarm.wav

那么它的相对路径是

  

资源/ alarm.wav