WPF:使用 ResourceDictionary 更改 MediaElement 源
我想在我的 WPF 应用程序中使用背景音乐。 就像你在这里看到的: 如何为我的 WPF 制作背景音乐-应用程序?
所以我使用 MediaElement。
现在我想在运行应用程序时更改它的来源。
我已经对一些背景图片做了类似的事情。在那里我有不同的资源字典,我正在切换它们以显示不同的“主题”。
我的一本字典看起来像这样:
<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 中写入什么。
I want to use background music in my WPF Application.
Like you can see here: How to do background music for my WPF-Application?
So I use a MediaElement.
Now I want to change the source of it while running the Application.
I'm already doing something similar with some background pictures. There I have different ResourceDictionaries that I'm switching to show different "themes".
One of my dictionaries looks like this:
<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>
So I can use it in the xaml like this:
...
<Grid x:Name="Bg" Background="{DynamicResource Backgroundpic}"/>
...
But HOW can I do that with my MediaElement-Source that I can use it like this:
<MediaElement x:Name="myMediaElement" Source="{DynamicResource ???}" />
I just don't know what to write into my ResourceDictionary.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
源是 Uri,因此您需要将资源一个乌里。 (请注意,System.Uri 位于 System 程序集中,而不是 mscorlib,因此它需要与 String 等类型不同的 XML 命名空间):
然后您可以使用
Source={DynamicResource mediaSource}
。Source is a Uri, so you need your resource to be a Uri. (Note that System.Uri is in the System assembly, not mscorlib, so it needs a different XML namespace than you would use for types like String):
Then you can reference it with
Source={DynamicResource mediaSource}
.