WPF:使用ResourceDictionary更改MediaElement源

时间:2010-07-01 08:41:37

标签: wpf mediaelement resourcedictionary

我想在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的内容。

1 个答案:

答案 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}引用它。