2014-06-18 6 views
1

스토리 보드 내에서 사운드 클립을 재생 (재생)하려고합니다. 사운드 파일 (예 : c : \ file \ location \ alarm.wave)에 절대 경로를 사용하면 정상적으로 작동합니다. 그러나, 만약 내가 상대 URI를 사용한다면, 그것은 일하는 사람이 아닙니다.오디오 리소스 파일이 MediaElement에서 재생되지 않습니다.

Resources라는 폴더에 내 alarm.wav가 있습니다. 내 프로젝트 루트에 있습니다. 나는 콘텐츠, 자원 및 임베디드 리소스에 대한 경보를 설정하는 작업을 시도했습니다. 또한 Resources.resx에 추가했습니다. /Resources/alarm.wav 및 Resources/alarm.wav와 pack : // application : ,,,/Capricorn2; component/Resources/alarm.wav와 같은 상대적 URI를 여러 번 사용해 보았습니다.

이러한 조합은 작동하지 않으므로 여기에서 명백한 것을 놓치고 있어야합니다 ... 어떤 생각입니까?

<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> 
+0

확인 , 그래서 나는 지금 일하고있는 조합을 가지고있다. 나는 alarm.wav가 내 리소스에 추가했습니다 .resx, alarm.wav 파일의 빌드 동작은 Content이고 Copy to Output은 항상 Copy이고 Source = "Resources/alarm.wav"를 사용하고 있습니다. 내 질문은 여전히, 왜 내가 url xaml 코드에서 작동하지 않습니다 남아 ?? –

답변

1

상대 URI 앞에는 '/'가 표시되지 않습니다. 그래서 사운드 파일의 절대 경로가

/ProjectName/Resources/alarm.wav

의 상대 경로는 다음되는 경우

자료/alarm.wav

관련 문제