我想在WPF应用程序中使用背景音乐。 就像你在这里看到的那样:How to do background music for my WPF-Application?
所以我使用MediaElement。
现在我想在运行应用程序时更改它的来源。
我已经在用一些背景图片做类似的事了。在那里,我有不同的ResourceDictionaries,我正在切换到显示不同的“主题”。
我的一本词典看起来像这样:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ImageBrush x:Key="Backgroundpic" ImageSource="picture.png"/>
...
</ResourceDictionary>
所以我可以像这样在xaml中使用它:
...
<Grid x:Name="Bg" Background="{DynamicResource Backgroundpic}"/>
...
但是我可以用我的MediaElement-Source做到这一点,我可以像这样使用它:
<MediaElement x:Name="myMediaElement" Source="{DynamicResource ???}" />
我只是不知道写入ResourceDictionary的内容。
答案 0 :(得分:2)
来源是Uri,因此您需要将资源作为Uri。 (请注意,System.Uri位于系统程序集中,而不是mscorlib,因此它需要一个不同于String类型的XML命名空间:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=System">
<sys:Uri x:Key="mediaSource">something.mp3</sys:Uri>
然后您可以使用Source={DynamicResource mediaSource}
引用它。