WPF:使用 ResourceDictionary 更改 MediaElement 源

发布于 2024-09-07 14:27:47 字数 946 浏览 8 评论 0原文

我想在我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

假装爱人 2024-09-14 14:27:47

源是 Uri,因此您需要将资源一个乌里。 (请注意,System.Uri 位于 System 程序集中,而不是 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}

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):

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

Then you can reference it with Source={DynamicResource mediaSource}.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文