C# 更改背景图像后声音被禁用

C# 更改背景图像后声音被禁用,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我有一个问题,声音被禁用后,改变了背景图像 基本上,我有一个全景项目。在该项目中,我放置了一个大的图像作为背景图像(让我们说一个标志)。在该标志上,我有几个按钮,可以在按下按钮时更改按钮图像(在Blend中创建的XAML代码),还可以播放声音。(使用Click事件处理程序Sound.Play();) 只要图像已预加载,所有操作都正常(.Layout image位于后面,按钮位于顶部/前部) 但是,我现在还添加了一个按钮,使用户可以使用PhotoChooserTask将图像更改为他们自己库中的内容

我有一个问题,声音被禁用后,改变了背景图像

基本上,我有一个全景项目。在该项目中,我放置了一个大的图像作为背景图像(让我们说一个标志)。在该标志上,我有几个按钮,可以在按下按钮时更改按钮图像(在Blend中创建的XAML代码),还可以播放声音。(使用Click事件处理程序Sound.Play();)

只要图像已预加载,所有操作都正常(.Layout image位于后面,按钮位于顶部/前部)

但是,我现在还添加了一个按钮,使用户可以使用PhotoChooserTask将图像更改为他们自己库中的内容。现在的问题是,是的,图像被用户选择的图像替换,但按钮不再播放任何声音。按钮图像仍然会更改,但当按下并释放时,w这意味着按钮仍处于活动/启用状态,但声音已被禁用或“均匀点击”处理程序不再工作

你知道这是为什么吗?我昨晚玩了一整晚都没弄明白

非常感谢您的帮助:-)

编辑:

下面是我用来加载图片的代码:

void photoChooserTask_Completed(object sender, PhotoResult e)
 {
if (e.TaskResult == TaskResult.OK)
{
     System.Windows.Media.Imaging.BitmapImage bmp = new     System.Windows.Media.Imaging.BitmapImage();
   bmp.SetSource(e.ChosenPhoto);
   BackGroundIMG.Source = bmp;
}
}

我的图片XAML代码是:

<Image Name="BackGroundIMG" Source="/Assets/Test.jpg" Grid.RowSpan ="3" Grid.ColumnSpan = "3"/>
同样,当我启动应用程序并按下按钮时,声音播放良好,但一旦我更改背景图像,声音将不会播放


所以我的猜测是,图片没有正确加载,但我不确定如何测试/更改它

我认为问题不完全在于更改图像,而在于打开PhotoChooser任务。我怀疑如果你使用任何内置的发射器和选择器,音频也会被切断


要使MediaElement工作,它必须是可视树的一部分,否则它将停止播放。当这些选择器任务打开时,它们将离开当前页面。我认为如果你在App.Xaml中使用一个全局MediaElement,你可以避免这种行为。这篇文章有一种创建全局媒体元素的方法:

您可以调试(或将调试信息写入控制台)以确定是否调用了单击处理程序吗?这将帮助人们帮助你。除非你发布一些代码,否则很难帮助你。嗨,对不起。。。我不确定拥有代码是否有帮助:-)。现在添加它。如果你们两个都有主意就好了。没有出现错误,没有打开调试窗口。更改背景图像后,声音根本无法在我的测试设备上播放。我想这里的标签windows-phone-8可能是错误的?它应该是windows-phone-8.1?您的MediaElement具有属性Autoplay,这仅在WP8.1中可用。您使用的是8.1还是8?嗯……我使用的是8.1 SDK,但这个应用程序是针对WP8.0的(尽管在WP8.1上进行了测试)。如何将播放功能添加到WP8.0中?也许这就是问题所在(尽管,它最初不应该播放任何声音)。编辑我尝试完全删除自动播放属性,但没有成功。另外,我确信自动播放也适用于WP8.0(根据一些教程),谢谢。但有趣的是,我现在遇到了更多的问题。基本上,我是这样做的,我将加载图像部分放置了一段时间,希望确保至少按钮正常工作,并且每次都设置好了等等。所以我添加了所有其他需要的按钮,猜猜看。。最后什么都没用:-(.奇怪的是,没有模式说明为什么等等。有两个按钮,声音播放效果很好,随机有两个以上的按钮,一个按钮可以工作,其他的就不行了。在尝试了几个小时解决问题后,我放弃了。。。
<MediaElement x:Name="Theme" Source="/Assets/Theme.wav" Volume="1" Autoplay="False"/>
<Button Name="Button1" Click="Button1_Click" Grid.Row="1" Grid.Column ="1"/>
private void Button1_Click (object sender, RoutedEventargs e)
{Theme.Play();}